# Federal Contract Awards Tracker (USAspending public data) (`appropriate_songbird/federal-contract-awards-tracker`) Actor

Who just won which US federal contract: new prime awards from USAspending public data with winner, amount, agency, NAICS, PSC, set-aside and place of performance. Filter by keyword, NAICS, agency, competitor name or state. Only-new delta mode. No API key.

- **URL**: https://apify.com/appropriate_songbird/federal-contract-awards-tracker.md
- **Developed by:** [Puneet](https://apify.com/appropriate_songbird) (community)
- **Categories:** Business, 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

## Federal Contract Awards Tracker

**See who just won which US federal contract, every morning, without a spreadsheet hunt.**

This Actor reads new federal prime contract awards from USAspending public data and hands you a clean, filtered list: the winner, the amount, the agency, what was bought (NAICS and PSC), the set-aside, where the work happens and a link to the full award record. No API key, no login, no browser.

Run it on a daily schedule with **Only new since last run** switched on and it becomes a competitor and market watch feed: each award shows up once, the day it appears.

### What people use it for

- **Competitor tracking**: put your rivals' names in *Recipient / competitor names* and get every new award they win.
- **Market intelligence**: watch your NAICS or PSC codes to see which agencies are buying, how much, and from whom.
- **Teaming and subcontracting leads**: a fresh prime award is the best moment to pitch the winner your services.
- **Pricing benchmarks**: compare award values for similar work across agencies.
- **Pipeline research**: pair it with our *Federal Contract Opportunities Feed* (open solicitations) to follow a requirement from notice to winner.

### Sample output

```json
{
  "awardId": "47QFMA26F0006",
  "awardType": "BPA CALL",
  "description": "DEHRADS ORDER 6 CYBERSECURITY, PRIVACY, RECORDS AND INFORMATION MANAGEMENT ...",
  "recipientName": "CLEARAVENUE LLC",
  "recipientUei": "TZJXKXNHDLX1",
  "recipientWithheldReason": null,
  "amountUsd": 13334355.2,
  "baseObligationDate": "2026-07-24",
  "startDate": "2026-08-27",
  "endDate": "2027-08-26",
  "awardingAgency": "General Services Administration",
  "awardingSubAgency": "Federal Acquisition Service",
  "fundingAgency": "Department of Defense",
  "naicsCode": "541519",
  "naicsDescription": "OTHER COMPUTER RELATED SERVICES",
  "pscCode": "DJ01",
  "pscDescription": "IT AND TELECOM - SECURITY AND COMPLIANCE SUPPORT SERVICES (LABOR)",
  "placeOfPerformanceState": "CA",
  "awardUrl": "https://www.usaspending.gov/award/CONT_AWD_47QFMA26F0006_4732_47QFMA24A0005_4732"
}
```

The table view in the Console shows winner, amount, agency, description, NAICS, PSC, dates and a link.

### Inputs

| Input | What it does |
|---|---|
| Keywords | Any of these words in the award text (3+ characters each) |
| NAICS codes | 2–6 digit codes; short codes include sub-codes |
| PSC codes | Product/Service Codes or prefixes (`D`, `DJ`, `DJ01`) |
| Awarding agencies | Exact top-tier names, e.g. `Department of Veterans Affairs` |
| Recipient / competitor names | Track specific companies |
| Place of performance states | `VA`, `TX`, `CA` ... |
| Set-aside codes | `SBA`, `8A`, `HZC`, `SDVOSBC`, `WOSB`, `EDWOSB`, `NONE` ... |
| Award types | Contracts A–D (default) or contract vehicles (IDVs) |
| Minimum / maximum amount | Award amount band in USD |
| Look back N days | Window ending today (1–365, default 7) |
| New awards only | On: awards first made in the window. Off: any award with activity (e.g. a modification) |
| Sort by | Newest, largest or recently modified |
| Only new since last run | Each award delivered once per filter set |
| Max results | Up to 5,000 per run |

Bad input (an unknown state, a malformed NAICS code) stops the run straight away with a plain message, so you are not charged for a run that could never work.

### Pricing

Pay per event: **$0.005 per run** plus **$0.002 per award delivered** ($2 per 1,000). A daily competitor watch that finds 20 awards costs about $0.045 a day. Set *Maximum cost per run* in the run options and the Actor stops cleanly when it is reached.

### Good to know

- **Reporting lag.** Agencies report awards to the federal procurement system, which feeds USAspending, usually within days. The Department of Defense publishes contract data with a 90-day delay, so recent DoD awards show up later.
- **Keyword matching** on awards from the last few days can lag behind the award itself; NAICS, PSC, agency and recipient filters pick awards up as soon as they are published.
- **Amounts** are the obligated award amount as USAspending reports it; IDVs often show $0 because money is obligated on the orders placed under them.
- **Withheld winners.** To protect private individuals, recipient names that look like a person (sole proprietors) are withheld along with their UEI. Recipient names on awards first made before 4 April 2022 are also withheld, in line with the Dun & Bradstreet data-use limits. `recipientWithheldReason` says why. Recipient street addresses are never collected.
- **Delta mode** state lives in a named key-value store in your own Apify account. Change any filter and the Actor treats it as a new watch list.
- **Run summary**: every run writes `RUN_SUMMARY` (awards read, delivered, skipped, withheld) to its key-value store.

### Data source and attribution

Data: USAspending.gov API v2, U.S. Department of the Treasury, Bureau of the Fiscal Service. USAspending data may be copied and reused for commercial purposes, subject to the Limitation on Permissible Use of Dun & Bradstreet, Inc. Data (https://www.usaspending.gov/db_info). Recipient business names may include data supplied by Dun & Bradstreet, Inc. (D\&B). This Actor is a filtered alert feed and is not a substitute for D\&B products.

This is an independent tool. It is not affiliated with, endorsed by or connected to the U.S. Department of the Treasury, USAspending.gov or any other government agency.

# Actor input Schema

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

Matched against award descriptions and other text fields. At least 3 characters each.

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

2 to 6 digits; shorter codes include all sub-codes (54 = professional services, 541512 = computer systems design).

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

Product/Service Codes or prefixes (D = IT services, DJ01 = security and compliance).

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

Exact top-tier agency names, e.g. Department of Defense, General Services Administration, Department of Veterans Affairs.

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

Track specific companies: matches recipient name or UEI text.

## `placeOfPerformanceStates` (type: `array`):

2-letter USPS codes such as VA, TX, CA.

## `setAsideCodes` (type: `array`):

e.g. SBA (small business), 8A, HZC (HUBZone), SDVOSBC (service-disabled veteran), WOSB, EDWOSB, NONE.

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

Contracts (A-D, default) or vehicles (IDV\_\*). Pick one group per run.

## `minAmountUsd` (type: `integer`):

Award amount (obligated) at least this.

## `maxAmountUsd` (type: `integer`):

Award amount at most this.

## `lookbackDays` (type: `integer`):

Date window ending today.

## `newAwardsOnly` (type: `boolean`):

On: awards first made in the window. Off: any award with a transaction (e.g. modification) in the window.

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

Order in which awards are read and delivered.

## `onlyNewSinceLastRun` (type: `boolean`):

Each award is delivered once per filter set (state kept in your own account). Ideal for daily schedules.

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

Cap on delivered awards per run (max 5,000).

## Actor input object example

```json
{
  "keywords": [
    "cybersecurity"
  ],
  "awardTypes": [
    "A",
    "B",
    "C",
    "D"
  ],
  "lookbackDays": 7,
  "newAwardsOnly": true,
  "sortBy": "newest",
  "onlyNewSinceLastRun": true,
  "maxResults": 500
}
```

# Actor output Schema

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

Dataset of federal contract awards matching the input filters.

## `runSummary` (type: `string`):

Counts for this run (read, delivered, skipped, withheld).

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

// Run the Actor and wait for it to finish
const run = await client.actor("appropriate_songbird/federal-contract-awards-tracker").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": ["cybersecurity"] }

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

```

## MCP server setup

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

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/FevuZfRrzb3CGMldU/builds/XPdbtWVnWh0MxysX2/openapi.json
