# US Federal Contracts & Grants — USAspending.gov (`nefes-tools/us-federal-awards`) Actor

New US federal contracts, IDVs and grants to companies and organizations from the official USAspending.gov API. Filter by keyword, NAICS, PSC, agency, state, date and amount; get only new awards on each run. Clean flat rows with links. Pay per award.

- **URL**: https://apify.com/nefes-tools/us-federal-awards.md
- **Developed by:** [Erich Michal Sikora](https://apify.com/nefes-tools) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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

## US Federal Contracts & Grants — USAspending.gov

**Get every new US federal contract, IDV and grant in one clean table:** who won it, how much, which agency,
NAICS/PSC codes, where the work happens and a link to the official record. Filter by keyword, industry code,
agency, state, date and amount. Turn on "Only new since the last run", schedule it daily, and you have a
federal award alert. You only pay for awards you actually receive.

| What you get per award | Example |
|---|---|
| Recipient company and UEI | SHR Consulting Group LLC · R2QCGJ5HH4F7 |
| Amount (USD) | 16 983 459 |
| Awarding agency and sub-agency | Department of Homeland Security · FEMA |
| NAICS and PSC with descriptions | 518210 Computing infrastructure · DA01 IT application support |
| Type and dates | BPA call · awarded 2026-09-21 · runs to 2027-09-20 |
| Place of performance | Alexandria, Fairfax County, VA 22312 |
| Description | "IT cloud operational and maintenance support for the National Flood Insurance Program" |
| Links | award detail page and recipient profile on USAspending.gov |

### Who uses it

- **Government contractors (BD and capture teams).** See which competitors win what, at which agency and for
  how much, every morning. Spot recompetes and teaming partners early.
- **Sales teams selling to federal contractors.** Fresh winners of large contracts in your NAICS codes are
  companies that are hiring, buying software and subcontracting right now.
- **Market and investment analysts.** Track federal spending by agency, industry, state or company.
- **Grant consultants and nonprofits.** New grants by program (assistance listing), agency and state.
- **AI agents and automations.** Flat JSON with stable field names for CRMs, Google Sheets, Slack, Make or Zapier.

### Source

**USAspending.gov**, the official source of US federal spending data run by the U.S. Department of the Treasury
(DATA Act). The Actor uses its public API: no login, no API key, no scraping of web pages. US government data is
in the public domain. Coverage: contracts and IDVs from FPDS and financial assistance from FABS since
October 2007 (FY2008).

### How to use it

1. Pick **award types**: contracts (default), IDVs (IDIQs, GWACs, schedules, BPAs) and/or grants.
2. Narrow it down with any mix of:
   - **Keywords** (any match; a multi-word entry is matched as a phrase), e.g. `cloud`, `cybersecurity`, `body armor`
   - **NAICS codes** (`5415` = all computer systems design) and **PSC codes** (`D` = all IT services, `R4` = professional support)
   - **Agencies** by name or abbreviation: `DOD`, `Army`, `Navy`, `VA`, `DHS`, `FEMA`, `NASA`, `NIH`, `GSA`…
   - **States** (place of performance or recipient location), **recipient companies** (name or UEI)
   - **Assistance listings** for grants, e.g. `93.855` or `20.205`
   - **Minimum / maximum amount**
3. Choose the dates: last N days (default 7) or an exact range. By default only **new awards** count; switch to
   *Any activity* to include modifications of older awards.
4. For alerts, turn on **Only new since the last run** and add a daily **Schedule** in Apify. Connect the
   results to e-mail, Slack, a webhook or Google Sheets with Apify integrations.

#### Example input

```json
{
    "awardTypes": ["contracts", "idvs"],
    "keywords": ["cloud", "zero trust"],
    "naicsCodes": ["5415", "518210"],
    "agencies": ["DHS", "VA", "NASA"],
    "states": ["VA", "MD", "DC"],
    "minAmount": 250000,
    "daysBack": 14,
    "onlyNew": true,
    "maxResults": 500
}
```

#### Example output

```json
{
    "awardId": "70FA3126F00000057",
    "awardCategory": "contract",
    "awardType": "bpa call",
    "recipientName": "SHR CONSULTING GROUP LLC",
    "recipientUei": "R2QCGJ5HH4F7",
    "recipientCity": "Alexandria",
    "recipientState": "VA",
    "amount": 16983459,
    "currency": "USD",
    "awardingAgency": "Department of Homeland Security",
    "awardingSubAgency": "Federal Emergency Management Agency",
    "naicsCode": "518210",
    "naicsDescription": "Computing Infrastructure Providers, Data Processing, Web Hosting, And Related Services",
    "pscCode": "DA01",
    "pscDescription": "IT AND TELECOM - BUSINESS APPLICATION/APPLICATION DEVELOPMENT SUPPORT SERVICES (LABOR)",
    "description": "THE PURPOSE OF THIS CALL ORDER IS TO ACQUIRE IT CLOUD OPERATIONAL AND MAINTENANCE SUPPORT SERVICE FOR THE NATIONAL FLOOD INSURANCE PROGRAM.",
    "awardDate": "2026-09-21",
    "startDate": "2026-09-21",
    "endDate": "2027-09-20",
    "performanceCity": "Alexandria",
    "performanceState": "VA",
    "awardUrl": "https://www.usaspending.gov/award/CONT_AWD_70FA3126F00000057_7022_70FA3126A00000004_7022",
    "recipientUrl": "https://www.usaspending.gov/recipient/8cd933b9-62f4-f6f8-8ce2-40d7cfe2c4d3-C/latest"
}
```

Every row also has funding agency, congressional district, ZIP codes, county, total outlays, IDV last order date,
assistance listing and last-modified time. All fields are flat (no nested objects), ready for a spreadsheet.

### Pricing

**Pay per award: $3 per 1 000 awards ($0.003 each)**, plus a tiny Actor start fee. No proxy, browser or
subscription costs.

- You pay only for awards written to the results. Skipped records and awards you already received
  (with *Only new*) are free.
- **Max awards** and Apify's *maximum cost per run* cap your spend. The Actor stops cleanly at the limit.
- A daily alert for one market (a few NAICS codes or agencies) typically returns 10–100 awards: $0.03–0.30 a day.

### Good to know

- **Companies and organizations only.** Awards to individuals are not collected: USAspending masks them
  ("INDIVIDUAL RECIPIENT", "REDACTED DUE TO PII", "MULTIPLE RECIPIENTS"), and the Actor also skips sole
  proprietors trading under their own name. Street addresses, contact persons, e-mails and phone numbers are
  not included (e-mails and phone numbers are removed from descriptions). The run summary shows how many
  records were skipped; you are not charged for them.
- **Reporting delays.** Agencies report contracts within days, grants often weeks later. The Department of
  Defense publishes much of its contract data with a 90-day delay. For alerts, use 7–14 days with *Only new*.
- **Amounts.** Contracts and grants show the obligated amount. IDVs usually show 0 or a small amount, because
  money is obligated later through orders. Use *Any activity* to see large modifications of older awards.
- **Sorting.** *Newest first* (default) or *Largest amount first*. When several award types are selected,
  results are interleaved so that the limit covers each type.
- **Rate limits.** USAspending is a shared public service and can be slow on broad searches. The Actor pauses
  between pages, honours `Retry-After` and retries on server errors, so large pulls take a few minutes.
- The `SUMMARY` record in the key-value store shows awards per type, matches at the source, skipped records,
  the filters that were applied and why the run stopped.

### FAQ

**How fresh is the data?** Each run queries the live USAspending API. New contract records usually appear
there within a few days of signature.

**Can I get older awards?** Yes. Set *Date from* / *Date to* (anything since 2007-10-01). Up to 10 000 awards per run.

**Does it include sub-awards or opportunities (SAM.gov)?** No. It covers prime awards (contracts, IDVs, grants).
Open solicitations are on SAM.gov, which is not part of this Actor.

**Something is wrong or missing?** Open an issue on the Actor page. Fixes are usually quick.

# Actor input Schema

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

Contracts = definitive contracts, purchase orders, delivery/task orders and BPA calls. IDVs = indefinite delivery vehicles (IDIQs, GWACs, Federal Supply Schedules, BPAs) that later receive orders. Grants = block, formula and project grants and cooperative agreements to organizations.

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

Full-text search in the award description, recipient and codes (any word matches, min. 3 characters). Leave empty for all awards.

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

Industry codes, 2–6 digits. Shorter codes include all sub-industries: "5415" = all computer systems design services. Contracts and IDVs only.

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

Product and Service Codes, 1–4 characters. Shorter codes include the whole group: "D" = all IT services, "DA" = IT applications, "R4" = professional support. Contracts and IDVs only.

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

Grant program numbers (formerly CFDA), e.g. "93.855" (NIH allergy and infectious diseases research) or "20.205" (highway planning and construction). Grants only.

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

Federal agencies by full name or abbreviation: "Department of Defense", "DOD", "NASA", "VA", "DHS", and sub-agencies such as "FEMA" or "Department of the Army". Unknown names are reported in the log.

## `agencyRole` (type: `string`):

Match the agency that awarded the contract (usual) or the one that paid for it.

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

2-letter state or territory codes (VA, TX, CA, DC, PR…). Leave empty for all.

## `stateMatch` (type: `string`):

Filter states by where the work is performed or by where the recipient company is located.

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

Only awards to these companies: name (part of it) or UEI, e.g. "Lockheed Martin", "Booz Allen". Useful for competitor tracking.

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

New awards = awards whose first (base) action falls in the date range (best for leads and alerts). Any activity = awards with any action in the range, including modifications of older awards. Last modified = records updated in the range.

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

How far back to look. Ignored when "Date from" is set. Agencies report contracts within days, grants often later, so for daily alerts keep 7–14 days together with "Only new since the last run".

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

Optional start date (YYYY-MM-DD). Overrides "Last N days". Earliest possible: 2007-10-01.

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

Optional end date (YYYY-MM-DD), inclusive. Default: today.

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

Only awards worth at least this much (obligated amount for contracts and grants; for IDVs usually the obligated amount of the base award, often 0).

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

Only awards worth at most this much.

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

Newest first or largest first. With a limit, this decides which awards you get.

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

Remember delivered awards and return only new ones next time (per combination of filters). Ideal for a daily schedule: you pay only for awards you have not seen.

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

Stop after this many awards (each award is one charged result).

## Actor input object example

```json
{
  "awardTypes": [
    "contracts"
  ],
  "keywords": [
    "cloud"
  ],
  "agencyRole": "awarding",
  "stateMatch": "performance",
  "dateType": "new",
  "daysBack": 7,
  "sortBy": "newest",
  "onlyNew": false,
  "maxResults": 100
}
```

# Actor output Schema

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

One row per award: recipient company, amount, agency, NAICS/PSC, dates, place of performance and links to USAspending.gov.

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

Awards per type, matches at the source, skipped individual recipients, why the run stopped and the filters used.

# 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": [
        "cloud"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nefes-tools/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": ["cloud"] }

# Run the Actor and wait for it to finish
run = client.actor("nefes-tools/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": [
    "cloud"
  ]
}' |
apify call nefes-tools/us-federal-awards --silent --output-dataset

```

## MCP server setup

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