# US Federal Contract Awards API (`crawlwren/us-federal-awards`) Actor

Who won which US federal contracts: awards from the official USAspending.gov API with recipient, UEI, parent company, agency, NAICS, PSC, amount, set-aside and competition. Filter by keyword, NAICS, PSC, agency, recipient, date and amount. Grants optional. $1.50 per 1,000.

- **URL**: https://apify.com/crawlwren/us-federal-awards.md
- **Developed by:** [Chordio, Inc.](https://apify.com/crawlwren) (community)
- **Categories:** Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 awards

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

**See who won which US federal contracts, as clean JSON, CSV or Excel.** This actor reads the official USAspending.gov API (free, no key) and returns one consistent record per award: recipient and UEI, parent company, awarding and funding agency, NAICS, PSC, obligated amount, dates, place of performance, set-aside and competition details, and a link to the award on USAspending.gov. Grants are optional.

Use it to:

- **Research competitors and teaming partners.** Which companies win IT contracts at the VA, under which vehicles, and for how much.
- **Find buyers.** See which agencies and offices buy what you sell, and when their contracts end.
- **Feed AI agents and capture tools.** One flat schema, callable as a tool from Claude, Cursor or any MCP client (see below).

### Why this actor

| | This actor | Typical approach |
|---|---|---|
| Access | Official USAspending.gov API v2, **no API key** | Manual CSV downloads or custom API code |
| Record | One flat record per award with **parent company, parent contract vehicle (IDV), set-aside, competition, number of offers** | Several endpoints to join yourself |
| Filters | Keywords, NAICS and PSC prefixes, agency, recipient name or UEI, date window, amount range, contracts or grants | Varies |
| Personal data | **Individual recipients redacted** (name, UEI, city, ZIP) | Usually shown as published |
| Politeness | One request at a time, at least 0.5 s apart, honest User-Agent | Varies |
| Price | **$1.50 per 1,000 awards** | |

### How it works

1. The actor sends your filters to USAspending's award search (100 awards per page, newest or largest first).
2. With **Include award details** on (default), it reads each award's detail record for the parent company, parent IDV, set-aside, competition, offers, pricing type and potential value. That's one extra request per award; turn it off for fast bulk pulls.
3. It applies PSC prefixes, redacts individual recipients and delivers one record per award.

### How to use it

1. Add **keywords** and/or **NAICS codes** (prefix match: `5415` covers all computer systems design).
2. Optionally add **PSC prefixes** (`D3`, `DA01` …), **awarding agencies** (exact names, e.g. `Department of Veterans Affairs`), **recipients** (name or UEI) and a **minimum amount**.
3. Choose the window: **Days back** (default 7) or **From/To dates**, and what the dates mean (new awards, any action, or last modified).
4. Click **Start**.

#### Daily "new awards" alert

Schedule the actor daily with `daysBack: 7` and `dateType: "new_awards"`, then send the dataset to Google Sheets, Slack or your CRM through Apify integrations. USAspending usually lags a few days behind signing, so a 7-day window with de-duplication on `generatedId` catches late arrivals.

#### Input example

```json
{
  "keywords": ["software", "cloud"],
  "naicsCodes": ["5415"],
  "agencies": ["Department of Veterans Affairs"],
  "minAmount": 100000,
  "daysBack": 30,
  "maxResults": 200
}
```

### Use it from Claude, Cursor or other MCP clients

Apify's MCP server exposes this actor as a tool. Add it to your client's MCP configuration (replace the token with your Apify API token):

```json
{
  "mcpServers": {
    "us-federal-awards": {
      "url": "https://mcp.apify.com/?actors=crawlwren/us-federal-awards",
      "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
    }
  }
}
```

Then ask, for example: *"Which companies won VA software contracts over $1M in the last 90 days, and under which contract vehicles?"* Each tool call is a normal run, billed per award.

### Output

Here's a sample from a real run:

```json
[
  {
    "awardId": "9523ZY27F0002",
    "piid": "9523ZY27F0002",
    "fain": null,
    "awardCategory": "contract",
    "awardType": "DELIVERY ORDER",
    "description": "CISCO SMARTNET RENEWAL",
    "recipientName": "NEW TECH SOLUTIONS, INC.",
    "recipientUei": "XK11LLUL61A7",
    "recipientIsIndividual": false,
    "recipientLocation": {
      "city": "FREMONT",
      "state": "CA",
      "country": "USA"
    },
    "recipientBusinessCategories": [
      "8(a) Program Participant",
      "Category Business",
      "Corporate Entity Not Tax Exempt"
    ],
    "parentRecipientName": "NEW TECH SOLUTIONS, INC.",
    "parentRecipientUei": "XK11LLUL61A7",
    "parentAwardPiid": "NNG15SC82B",
    "parentAwardType": "GWAC",
    "parentAwardAgency": "National Aeronautics and Space Administration",
    "awardingAgency": "Commodity Futures Trading Commission",
    "awardingSubAgency": "Commodity Futures Trading Commission",
    "awardingOffice": "COMMODITY FUTURES TRADING COMM",
    "fundingAgency": "Commodity Futures Trading Commission",
    "fundingSubAgency": "Commodity Futures Trading Commission",
    "naicsCode": "541519",
    "naicsDescription": "OTHER COMPUTER RELATED SERVICES",
    "pscCode": "7B22",
    "pscDescription": "IT AND TELECOM - COMPUTE: SERVERS (HARDWARE AND PERPETUAL LICENSE SOFTWARE)",
    "assistanceListing": null,
    "assistanceListingTitle": null,
    "obligatedAmount": 0.0,
    "totalOutlays": null,
    "currentValue": 91305.31,
    "potentialValue": 91305.31,
    "currency": "USD",
    "dateSigned": "2026-10-09",
    "startDate": "2026-10-01",
    "endDate": "2027-09-30",
    "potentialEndDate": "2027-09-30",
    "lastModified": "2026-10-09 16:38:22",
    "placeOfPerformance": {
      "city": "FREMONT",
      "state": "CA",
      "zip5": "94538",
      "country": "USA"
    },
    "setAsideCode": null,
    "setAside": null,
    "extentCompeted": "FULL AND OPEN COMPETITION AFTER EXCLUSION OF SOURCES",
    "solicitationProcedures": "SUBJECT TO MULTIPLE AWARD FAIR OPPORTUNITY",
    "numberOfOffers": 6,
    "pricingType": "FIRM FIXED PRICE",
    "detailsIncluded": true,
    "generatedId": "CONT_AWD_9523ZY27F0002_9507_NNG15SC82B_8000",
    "url": "https://www.usaspending.gov/award/CONT_AWD_9523ZY27F0002_9507_NNG15SC82B_8000",
    "apiUrl": "https://api.usaspending.gov/api/v2/awards/CONT_AWD_9523ZY27F0002_9507_NNG15SC82B_8000/",
    "dataSource": "usaspending_api",
    "licence": "U.S. Government work, public domain (17 U.S.C. § 105). Source: USAspending.gov, U.S. Department of the Treasury (DATA Act). Not affiliated with or endorsed by the Treasury or USAspending.gov.",
    "scrapedAt": "2026-10-12T22:45:27+00:00"
  },
  {
    "awardId": "47QACA27F0004",
    "piid": "47QACA27F0004",
    "fain": null,
    "awardCategory": "contract",
    "awardType": "DELIVERY ORDER",
    "description": "CSAT  KNOWBE4 SECURITY AWARENESS  COMPLIANCE PLUS SUBSCRIPTION RENEWAL",
    "recipientName": "GOVSMART, INC.",
    "recipientUei": "DJACUETFQUL8",
    "recipientIsIndividual": false,
    "recipientLocation": {
      "city": "CHARLOTTESVILLE",
      "state": "VA",
      "country": "USA"
    },
    "recipientBusinessCategories": [
      "8(a) Program Participant",
      "Category Business",
      "Corporate Entity Not Tax Exempt"
    ],
    "parentRecipientName": "GOVSMART, INC.",
    "parentRecipientUei": "DJACUETFQUL8",
    "parentAwardPiid": "NNG15SD11B",
    "parentAwardType": "GWAC",
    "parentAwardAgency": "National Aeronautics and Space Administration",
    "awardingAgency": "General Services Administration",
    "awardingSubAgency": "Federal Acquisition Service",
    "awardingOffice": "OFFICE OF CENTRALIZED ACQUISITION SERVICES",
    "fundingAgency": "Small Business Administration",
    "fundingSubAgency": "Small Business Administration",
    "naicsCode": "541519",
    "naicsDescription": "OTHER COMPUTER RELATED SERVICES",
    "pscCode": "DA10",
    "pscDescription": "IT AND TELECOM - BUSINESS APPLICATION/APPLICATION DEVELOPMENT SOFTWARE AS A SERVICE",
    "assistanceListing": null,
    "assistanceListingTitle": null,
    "obligatedAmount": 108600.0,
    "totalOutlays": null,
    "currentValue": 108600.0,
    "potentialValue": 108600.0,
    "currency": "USD",
    "dateSigned": "2026-10-09",
    "startDate": "2026-10-09",
    "endDate": "2027-10-08",
    "potentialEndDate": "2027-10-08",
    "lastModified": "2026-10-09 17:02:16",
    "placeOfPerformance": {
      "city": "WASHINGTON",
      "state": "DC",
      "zip5": "20416",
      "country": "USA"
    },
    "setAsideCode": null,
    "setAside": null,
    "extentCompeted": "FULL AND OPEN COMPETITION AFTER EXCLUSION OF SOURCES",
    "solicitationProcedures": "SUBJECT TO MULTIPLE AWARD FAIR OPPORTUNITY",
    "numberOfOffers": 2,
    "pricingType": "FIRM FIXED PRICE",
    "detailsIncluded": true,
    "generatedId": "CONT_AWD_47QACA27F0004_4732_NNG15SD11B_8000",
    "url": "https://www.usaspending.gov/award/CONT_AWD_47QACA27F0004_4732_NNG15SD11B_8000",
    "apiUrl": "https://api.usaspending.gov/api/v2/awards/CONT_AWD_47QACA27F0004_4732_NNG15SD11B_8000/",
    "dataSource": "usaspending_api",
    "licence": "U.S. Government work, public domain (17 U.S.C. § 105). Source: USAspending.gov, U.S. Department of the Treasury (DATA Act). Not affiliated with or endorsed by the Treasury or USAspending.gov.",
    "scrapedAt": "2026-10-12T22:45:27+00:00"
  },
  {
    "awardId": "2031ZB27F00002",
    "piid": "2031ZB27F00002",
    "fain": null,
    "awardCategory": "contract",
    "awardType": "DELIVERY ORDER",
    "description": "PURCHASING OF FIFTY (50) AUTOCAD ANNUAL SOFTWARE SUBSCRIPTIONS, INCLUDING SPECIALIZED TOOLSETS.",
    "recipientName": "SOFTWARE INFORMATION RESOURCE CORP.",
    "recipientUei": "EJJMMJHYDFH6",
    "recipientIsIndividual": false,
    "recipientLocation": {
      "city": "WASHINGTON",
      "state": "DC",
      "country": "USA"
    },
    "recipientBusinessCategories": [
      "Category Business",
      "Corporate Entity Not Tax Exempt",
      "Minority Owned Business"
    ],
    "parentRecipientName": "SOFTWARE INFORMATION RESOURCE",
    "parentRecipientUei": "NYQ8DFDUJVX1",
    "parentAwardPiid": "47QTCA23D001S",
    "parentAwardType": "FSS",
    "parentAwardAgency": "General Services Administration",
    "awardingAgency": "Department of the Treasury",
    "awardingSubAgency": "Bureau of Engraving and Printing",
    "awardingOffice": "IRS BEP IT ACQUISITION",
    "fundingAgency": "Department of the Treasury",
    "fundingSubAgency": "Bureau of Engraving and Printing",
    "naicsCode": "541519",
    "naicsDescription": "OTHER COMPUTER RELATED SERVICES",
    "pscCode": "7A21",
    "pscDescription": "IT AND TELECOM - BUSINESS APPLICATION SOFTWARE (PERPETUAL LICENSE SOFTWARE)",
    "assistanceListing": null,
    "assistanceListingTitle": null,
    "obligatedAmount": 197540.5,
    "totalOutlays": null,
    "currentValue": 197540.5,
    "potentialValue": 197540.5,
    "currency": "USD",
    "dateSigned": "2026-10-09",
    "startDate": "2026-10-09",
    "endDate": "2027-09-30",
    "potentialEndDate": "2027-09-30",
    "lastModified": "2026-10-09 14:39:40",
    "placeOfPerformance": {
      "city": "WASHINGTON",
      "state": "DC",
      "zip5": "20037",
      "country": "USA"
    },
    "setAsideCode": null,
    "setAside": null,
    "extentCompeted": "FULL AND OPEN COMPETITION",
    "solicitationProcedures": "SUBJECT TO MULTIPLE AWARD FAIR OPPORTUNITY",
    "numberOfOffers": 6,
    "pricingType": "FIRM FIXED PRICE",
    "detailsIncluded": true,
    "generatedId": "CONT_AWD_2031ZB27F00002_2041_47QTCA23D001S_4732",
    "url": "https://www.usaspending.gov/award/CONT_AWD_2031ZB27F00002_2041_47QTCA23D001S_4732",
    "apiUrl": "https://api.usaspending.gov/api/v2/awards/CONT_AWD_2031ZB27F00002_2041_47QTCA23D001S_4732/",
    "dataSource": "usaspending_api",
    "licence": "U.S. Government work, public domain (17 U.S.C. § 105). Source: USAspending.gov, U.S. Department of the Treasury (DATA Act). Not affiliated with or endorsed by the Treasury or USAspending.gov.",
    "scrapedAt": "2026-10-12T22:45:27+00:00"
  }
]
```

Key fields: `awardId` / `piid` (contracts) / `fain` (grants), `awardType`, `recipientName`, `recipientUei`, `parentRecipientName`, `parentAwardPiid` / `parentAwardType` (e.g. GWAC), `awardingAgency` / `awardingSubAgency` / `awardingOffice`, `fundingAgency`, `naicsCode`, `pscCode`, `obligatedAmount`, `currentValue`, `potentialValue`, `dateSigned`, `startDate`, `endDate`, `placeOfPerformance`, `setAside`, `extentCompeted`, `numberOfOffers`, `description`, `url`, `licence`.

### Pricing

Pay-per-event: you pay only for awards delivered after your filters.

| Event | Price | What it is |
|---|---|---|
| Run start | $0.0005 | Charged once per run (covers start-up compute). |
| Award | $0.0015 ($1.50 per 1,000) | One normalised federal award record delivered to the dataset (after your filters). |

**Examples:**

- A daily alert with 20 new matching awards costs about **$0.03/day (≈ $0.90/month)**.
- A one-off pull of 1,000 awards costs about **$1.50**.

### Data source and licence

The data comes from USAspending.gov, the official source of US federal spending data published by the U.S. Department of the Treasury under the DATA Act, through its public API v2. It's a U.S. Government work in the public domain; every record carries this in its `licence` field. This actor is not affiliated with or endorsed by the Treasury or USAspending.gov.

### FAQ

**How fresh is the data?** Agencies report contract actions to FPDS, and USAspending loads them daily. New awards usually appear a few days after signing, so use a window of a week or more for alerts.

**Why is a recipient shown as `[individual recipient]`?** When USAspending flags a recipient as an individual, or a sole proprietorship has a personal name, we withhold the name, UEI, city and ZIP. The name check is cautious, so a few small firms with person-like names are withheld too. `RUN_STATS` counts redactions.

**What does "obligated amount" mean?** The money the government has committed to the award so far. `currentValue` is base plus exercised options; `potentialValue` includes all options.

**Why did my agency filter return nothing?** Agency names must match USAspending exactly, e.g. `Department of Defense`, `Department of Health and Human Services`, `General Services Administration`. Abbreviations such as `VA`, `DOD` or `GSA` work too. An unknown name stops the run with a configuration error (nothing is charged except the start), and `RUN_STATS.knownAgencies` lists the valid names.

**Can I get grants?** Yes: add `grants` to **Award types**. Grant records have `fain` and `assistanceListing` instead of PIID, NAICS and PSC.

**Can I get open opportunities instead of awards?** Yes, with our sibling actor [SAM.gov Contract Opportunities](https://apify.com/crawlwren/sam-gov-opportunities).

### Support

Found a bug or need a field? Open an issue on the actor's **Issues** tab or email hello@crawlwren.com. Built and maintained by **Crawlwren**.

# Actor input Schema

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

Awards whose description, recipient or other text matches ANY of these (USAspending full-text search, at least 3 characters each). Empty = all.

## `awardTypes` (type: `array`):

Contracts (BPA calls, purchase orders, delivery orders, definitive contracts) are the default. Grants (block, formula, project grants and cooperative agreements) are optional.

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

Prefix match, e.g. 5415 = computer systems design, 541512 = exactly that code. Applied by USAspending.

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

Product/Service Code prefixes, e.g. D3 (IT and telecom) or DA01. Applied after the search, so use with keywords, NAICS or an agency to keep runs short.

## `agencies` (type: `array`):

Exact top-tier agency names as USAspending spells them, e.g. 'Department of Veterans Affairs', 'Department of Defense', 'General Services Administration'.

## `recipients` (type: `array`):

Recipient name text or UEI, e.g. 'Leidos' or 'UER4AJLUB8D5'.

## `dateType` (type: `string`):

New awards: awards first signed in the window (best for alerts). Action date: any award with a transaction (new award or modification) in the window. Last modified: records updated in the window.

## `daysBack` (type: `integer`):

Window size ending today (UTC). Ignored when 'From date' is set. USAspending usually lags a few days behind the signing date.

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

Start of the window (YYYY-MM-DD, earliest 2007-10-01). Overrides 'Days back'.

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

End of the window (YYYY-MM-DD). Default: today.

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

Only awards with at least this obligated amount.

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

Only awards up to this obligated amount.

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

Which awards come first (and so which ones maxResults keeps).

## `includeDetails` (type: `boolean`):

One extra request per award for the parent company, parent contract vehicle (IDV), set-aside, competition, number of offers, pricing type and potential value. Turn off for faster, larger pulls.

## `maxResults` (type: `integer`):

Stop after this many awards (you're charged per award delivered).

## `maxPages` (type: `integer`):

Each page is 100 search rows. Safety cap on long runs.

## Actor input object example

```json
{
  "keywords": [
    "software",
    "cloud",
    "cybersecurity"
  ],
  "awardTypes": [
    "contracts"
  ],
  "naicsCodes": [
    "5415"
  ],
  "dateType": "new_awards",
  "daysBack": 14,
  "sortBy": "newest",
  "includeDetails": true,
  "maxResults": 100,
  "maxPages": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Normalised federal contract (and optionally grant) awards from USAspending.gov, one row per award, each with its licence.

## `runStats` (type: `string`):

JSON summary of the run: results delivered, items filtered, individuals redacted, request success and any errors.

# 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 = {
    "keywords": [
        "software",
        "cloud",
        "cybersecurity"
    ],
    "awardTypes": [
        "contracts"
    ],
    "naicsCodes": [
        "5415"
    ],
    "daysBack": 14
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlwren/us-federal-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 = {
    "keywords": [
        "software",
        "cloud",
        "cybersecurity",
    ],
    "awardTypes": ["contracts"],
    "naicsCodes": ["5415"],
    "daysBack": 14,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlwren/us-federal-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 '{
  "keywords": [
    "software",
    "cloud",
    "cybersecurity"
  ],
  "awardTypes": [
    "contracts"
  ],
  "naicsCodes": [
    "5415"
  ],
  "daysBack": 14
}' |
apify call crawlwren/us-federal-awards --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlwren/us-federal-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/CxCF4U6RSGIlggMJZ/builds/ffYLFef66SJm5qbXB/openapi.json
