# USAspending Federal Awards Scraper & Monitor (`kempt_horizon_yzk/usaspending-awards`) Actor

Search and monitor US federal contract, IDV, grant, loan and payment awards from the official USAspending.gov API. Filter by keyword, recipient, agency, NAICS, PSC, ALN, state, amount, dates. Monitor mode returns only new or changed awards. No key. $0.002/award.

- **URL**: https://apify.com/kempt_horizon_yzk/usaspending-awards.md
- **Developed by:** [Kempt Horizon Data](https://apify.com/kempt_horizon_yzk) (community)
- **Categories:** AI, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## USAspending.gov Federal Awards Scraper & Monitor: Contracts, Grants (No Key)

Get **US federal contract, IDV, grant, loan and payment awards from USAspending.gov** as clean JSON, CSV or Excel. Search by keyword, **recipient (company name or UEI), awarding agency, NAICS, PSC, set-aside, Assistance Listing (CFDA), place of performance, amount and date**. Each award includes the recipient and UEI, obligated amount, outlays, period of performance, agency and sub-agency, NAICS/PSC or assistance listing, and links to the award and recipient pages. Turn on **monitor mode** to get only **new awards and awards whose amount, outlays or dates changed** since your last run.

Data comes from the **official USAspending.gov API** run by the US Treasury. No API key, no login, no scraping.

### For AI agents (MCP / API) quick reference

- **Use when:** you need who won which federal contracts or grants, how much a company or university gets from the government, competitor and incumbent research, or new awards in a NAICS code, agency or state.
- **Don't use for:** open solicitations you can still bid on (use [SAM.gov Contract Opportunities Scraper](https://apify.com/kempt_horizon_yzk/samgov-opportunities)) or open grants (use [Grants.gov Scraper](https://apify.com/kempt_horizon_yzk/grants-gov-opportunities)).
- **Minimal input:** `{"awardCategories": ["contracts"], "keywords": ["cybersecurity"], "lastDays": 30, "maxItems": 20}`. All fields are optional.
- **Output:** one dataset item per award: `awardId`, `category`, `awardType`, `recipientName`, `recipientUei`, `amount`, `totalOutlays`, `description`, `startDate`, `endDate`, `lastModified`, `awardingAgency`, `awardingSubAgency`, `naics`, `psc`, `assistanceListings`, `placeOfPerformance`, `url`, `recipientUrl`.
- **Price:** $0.001 per run + **$0.002 per award**. 20 awards cost about $0.04. Pay per event only, limited permissions, so agentic payments (x402, Skyfire, Apify AGI token) work.
- **MCP:** add `https://mcp.apify.com?tools=kempt_horizon_yzk/usaspending-awards` to your MCP client.

### What can this USAspending scraper do?

- ✅ **All award categories**: contracts, IDVs (GWACs, IDIQs, BPAs), grants, loans, direct payments and other assistance
- ✅ **Filters**: keywords, recipient names or UEIs, awarding agencies, NAICS (prefixes), PSC, set-asides, Assistance Listings, place-of-performance states, minimum and maximum amount, action date range
- ✅ **Sort** by most recently modified or largest amount
- ✅ **Monitor mode**: remembers each award's amount, outlays, end date and modification date in a key-value store and returns only new or changed awards (each tagged `new` or `changed`)
- ✅ **Pay only for results**: unchanged awards in monitor mode are never charged
- ✅ Retries with exponential backoff

### Who uses it?

Government contractors doing competitor, teaming and incumbent research, BD and capture teams, market researchers sizing federal spend, investors tracking government revenue of public companies, journalists, and university research offices tracking grant income.

### How much does it cost?

| Event | Price |
|---|---|
| Actor start | $0.001 |
| Federal award (new or changed) | **$0.002** |

A weekly monitor that finds 100 new or changed awards costs about $0.20. 1,000 awards cost $2. Set a **maximum cost per run** and the Actor stops cleanly when it gets there.

### How to use it

1. Click **Try for free**. The example input (cybersecurity contracts, last 30 days, 20 results) returns results right away.
2. Add a competitor name, NAICS codes, an agency or a state.
3. Click **Start** and download results as JSON, CSV, Excel or HTML, or read them with the API.
4. For alerts, tick **Only new or changed since last run**, give the monitor a name, and add a **Schedule**.

### Input example

```json
{
  "awardCategories": ["contracts", "idvs"],
  "naicsCodes": ["5415"],
  "awardingAgencies": ["Department of Homeland Security"],
  "minAmount": 1000000,
  "lastDays": 30,
  "sortBy": "amount",
  "maxItems": 100,
  "onlyNew": true,
  "stateKey": "dhs-it-awards"
}
```

### Output example

```json
{
  "awardId": "36C10B26F0263",
  "generatedId": "CONT_AWD_36C10B26F0263_3600_47QTCA21D00C1_4732",
  "category": "contract",
  "awardType": "DELIVERY ORDER",
  "recipientName": "CLIENT FIRST TECHNOLOGIES, INC",
  "recipientUei": "FLG4E9KX6Z86",
  "amount": 1050667.68,
  "totalOutlays": 0,
  "description": "ENTERPRISE CYBERSECURITY PROGRAM AUDIT SUPPORT BASE PERIOD",
  "startDate": "2026-09-25",
  "endDate": "2027-09-24",
  "baseObligationDate": "2026-08-06",
  "lastModified": "2026-10-06 11:23:22",
  "awardingAgency": "Department of Veterans Affairs",
  "awardingSubAgency": "Department of Veterans Affairs",
  "fundingAgency": "Department of Veterans Affairs",
  "fundingSubAgency": "Department of Veterans Affairs",
  "naics": {
    "code": "541511",
    "description": "CUSTOM COMPUTER PROGRAMMING SERVICES"
  },
  "psc": {
    "code": "DA01",
    "description": "IT AND TELECOM - BUSINESS APPLICATION/APPLICATION DEVELOPMENT SUPPORT SERVICES (LABOR)"
  },
  "assistanceListings": [],
  "placeOfPerformance": {
    "state": "VA",
    "country": "USA",
    "zip5": "22030"
  },
  "disasterEmergencyCodes": [
    "Q"
  ],
  "url": "https://www.usaspending.gov/award/CONT_AWD_36C10B26F0263_3600_47QTCA21D00C1_4732",
  "recipientUrl": "https://www.usaspending.gov/recipient/5b6e9e3a-4a48-f202-40ac-b6424389da5f-C/latest",
  "scrapedAt": "2026-10-15T13:13:52.787Z"
}
```

### FAQ

**Do I need an API key?** No. The USAspending.gov API is free and public.

**Why don't I see recent Department of Defense contracts?** DoD publishes contract data with a 90-day delay. Other agencies usually appear within days.

**How far back does it go?** Action dates from 2007-10-01 to today.

**Is this legal?** USAspending.gov is official US government open data published for reuse under the DATA Act.

**Related Actors:** [SAM.gov Contract Opportunities Scraper](https://apify.com/kempt_horizon_yzk/samgov-opportunities), [Grants.gov Scraper](https://apify.com/kempt_horizon_yzk/grants-gov-opportunities), [SEC EDGAR Filings](https://apify.com/kempt_horizon_yzk/sec-edgar-filings).

Built and maintained by **Kempt Horizon Data**. Found a bug or need a field? Open an issue on the Actor's Issues tab and we usually reply within a day.

# Actor input Schema

## `awardCategories` (type: `array`):

Which award types to search.

## `keywords` (type: `array`):

Optional. Matches award descriptions, recipient names and other text fields.

## `recipientNames` (type: `array`):

Optional. Company or organization names (partial match) or UEIs, e.g. Booz Allen, Leidos.

## `awardingAgencies` (type: `array`):

Optional top-tier agency names exactly as on USAspending, e.g. Department of Veterans Affairs, Department of Homeland Security, General Services Administration.

## `naicsCodes` (type: `array`):

Optional (contracts/IDVs). 2 to 6 digits; shorter codes include all children, e.g. 5415.

## `pscCodes` (type: `array`):

Optional (contracts/IDVs). Product/Service Codes, e.g. D310, R425.

## `setAsideTypes` (type: `array`):

Optional (contracts/IDVs), e.g. SBA, 8A, HZC, SDVOSBC, WOSB.

## `assistanceListings` (type: `array`):

Optional (grants/loans/payments), e.g. 93.837.

## `states` (type: `array`):

Optional two-letter state codes, e.g. VA, MD, TX.

## `minAmount` (type: `integer`):

Optional.

## `maxAmount` (type: `integer`):

Optional.

## `lastDays` (type: `integer`):

Optional. Awards with an action in this window. Default window is the last 30 days. Note: DoD contract data is published with a 90-day delay.

## `dateFrom` (type: `string`):

Optional. Ignored when 'Activity in last N days' is set. Earliest 2007-10-01.

## `dateTo` (type: `string`):

Optional. Defaults to today.

## `sortBy` (type: `string`):

Result order.

## `maxItems` (type: `integer`):

Maximum awards to save (and pay for). Up to 10,000 per category per run.

## `onlyNew` (type: `boolean`):

Remembers awards already returned for the same filters (or monitor name) in a key-value store. Returns only new awards and awards whose amount, outlays, end date or modification date changed.

## `stateKey` (type: `string`):

Optional name for the monitor state, so several schedules keep separate memories.

## Actor input object example

```json
{
  "awardCategories": [
    "contracts"
  ],
  "keywords": [
    "cybersecurity"
  ],
  "lastDays": 30,
  "sortBy": "lastModified",
  "maxItems": 20,
  "onlyNew": false
}
```

# Actor output Schema

## `awards` (type: `string`):

No description

## `all` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "awardCategories": [
        "contracts"
    ],
    "keywords": [
        "cybersecurity"
    ],
    "lastDays": 30,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("kempt_horizon_yzk/usaspending-awards").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "awardCategories": ["contracts"],
    "keywords": ["cybersecurity"],
    "lastDays": 30,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("kempt_horizon_yzk/usaspending-awards").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "awardCategories": [
    "contracts"
  ],
  "keywords": [
    "cybersecurity"
  ],
  "lastDays": 30,
  "maxItems": 20
}' |
apify call kempt_horizon_yzk/usaspending-awards --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kempt_horizon_yzk/usaspending-awards"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WD5davcsiMfmpXaLE/builds/36LsEYKY27VR5BeWo/openapi.json
