# Federal Contract Award Winners Feed (Unofficial) (`saiberops/federal-award-winners-feed`) Actor

Companies that just won federal contracts, IDVs or grants: winner, UEI, amount, agency, NAICS and location, with per-winner totals and optional prime subcontracts. New-since-last-run mode. From USAspending.gov data; no API key.

- **URL**: https://apify.com/saiberops/federal-award-winners-feed.md
- **Developed by:** [Saiber Operations](https://apify.com/saiberops) (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 $1.60 / 1,000 award returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Award Winners Feed (Unofficial): New Contract, IDV and Grant Wins

Reach companies the week they win federal money. This Actor returns **newly reported federal awards**, one row per award: the **winning company** (legal name, UEI, city and state), the amount, the agency, the industry (NAICS and PSC) and where the work happens. Run it on a schedule with **New since last run** and each run returns only wins you haven't seen. Every run also totals the awards **per winner**, and can add the **subcontracts primes report**.

**Built for:**

- **B2B sales teams selling to new federal contractors:** staffing and recruiting, equipment, software, insurance and bonding, accounting and compliance, invoice factoring and receivables lending. A company that just won a contract is about to hire, buy and finance.
- **Subcontractors and teaming partners** looking for primes that just won work in their NAICS or state.
- **Market and competitor watchers** tracking who wins in an agency or industry.
- **AI agents and data teams.** Clean JSON with no API key and no login.

### What you get

For each new award:

- **Winner:** legal name as published, UEI, recipient profile link, city, state, ZIP, country
- **Award:** award ID, category (contract, IDV or grant), type, description (blanked when it looks like it names a person; see FAQ), amount, signed date, start and end dates (ordering deadline for IDVs), award link
- **Buyer:** awarding agency and sub-agency, funding agency and sub-agency
- **Industry:** NAICS and PSC codes with descriptions (contracts), assistance listing (grants)
- **Place of performance:** city, state, ZIP, country
- **Winner totals in this run:** number of awards and total amount per winner on every row, plus a one-entry-per-company roll-up (largest first) in the run's `RECIPIENTS` key-value store record, shown in the Output tab as **Winners roll-up (JSON)**. Totals cover only the rows the run returned.
- **Optional details (free):** set-aside, extent competed, number of offers, parent vehicle, awarding office, parent company and the winner's business types (small, women-owned, veteran-owned, 8(a), HUBZone)
- **Optional subcontracts (add-on):** subcontractor, amount, date, prime contractor and prime award

### Sample output

```json
{
  "recordType": "award",
  "awardId": "47QTCA26F0101",
  "awardCategory": "contract",
  "awardType": "DELIVERY ORDER",
  "description": "CLOUD MIGRATION SUPPORT",
  "recipientName": "PEACHTREE DATA SYSTEMS LLC",
  "recipientUei": "PTDS1234ABCD",
  "recipientCity": "ATLANTA",
  "recipientState": "GA",
  "recipientZip": "30303",
  "awardingAgency": "General Services Administration",
  "awardingSubAgency": "Federal Acquisition Service",
  "naicsCode": "541512",
  "naicsDescription": "COMPUTER SYSTEMS DESIGN SERVICES",
  "pscCode": "DA01",
  "awardAmount": 1250000.0,
  "dateSigned": "2026-10-21",
  "startDate": "2026-10-21",
  "endDate": "2027-10-20",
  "popCity": "ARLINGTON",
  "popState": "VA",
  "recipientAwardsInRun": 2,
  "recipientAmountInRun": 1730000.0,
  "detailsIncluded": false,
  "source": "USAspending.gov (unofficial)"
}
```

(Illustrative example; field list abbreviated.)

### Inputs

- **What to fetch:** the last N days (default 7), **New since last run** for a schedule, or a fixed date range of up to a year.
- **Which awards count as new:** awards *signed* in the window (default), or any award with an action in the window, which also catches option exercises and added funding.
- **Award types:** contracts (default), IDVs (new IDIQs, GWACs, schedules and BPAs) and grants. Grants are searched only among organizations (businesses, nonprofits, governments, schools and similar); contract, IDV and subcontract rows whose recipient name looks like a person's are dropped.
- **Filters:** NAICS and PSC codes (prefixes work), agencies and sub-agencies, the winner's state, place-of-performance state, winner business types, set-aside types, minimum and maximum amount, keywords (USAspending matches them against award descriptions and other award text, including recipient names).
- **Add set-aside, competition and business types:** one extra lookup per contract, no extra charge.
- **Add subcontracts reported by primes:** a paid add-on.

**Quick start:** keep the defaults (contracts of $100k or more signed in the last 7 days) or add your NAICS codes or the states you sell into, then click **Start**. Results appear in the **New awards**, **Winner totals by award** (one row per award with its winner's run totals) and **Subawards** tabs, newest first; the per-company roll-up is the **Winners roll-up (JSON)** output. For a recurring lead feed, choose **New since last run**, set **Days to look back** (30 for civilian agencies; 100 or more, with narrow filters, if you need Defense awards; see Limits) and schedule the Actor daily or weekly.

### Pricing

Pay per event: you pay only for rows returned.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Award returned | $0.0024 | $0.002 | $0.0018 | $0.0016 |
| Subaward returned (only with the subcontract add-on) | $0.0024 | $0.002 | $0.0018 | $0.0016 |

That's $1.60–$2.40 per 1,000 awards, plus Apify's standard Actor start fee. Awards removed by your filters, awards already returned (in "New since last run"), rows dropped because the recipient name looks like a person's, and runs that fail are **not charged**. The details lookup and the winners roll-up are free. Set **Max cost per run** to cap spending; the Actor stops cleanly at the cap.

### Integrations and API

Schedule it in Apify and send new winners to Google Sheets, Slack, HubSpot, Salesforce, Make, Zapier or n8n through Apify's integrations, or call it from the Apify API. AI agents can use it through Apify's MCP server.

### Limits

- **Reporting lag.** Civilian contract awards usually appear on USAspending within a few days. **Department of Defense awards appear about 90 days after signing**, and grants and subcontracts can take weeks. An award only comes through if it is signed inside your look-back window when it finally appears, so a 7- or 30-day look-back never returns most Defense awards. For Defense, use **New since last run** with a look-back of **at least 100 days** (up to 180) and narrow filters (NAICS, agency, state).
- **Newest first, page limit.** Each run reads awards newest first and at most **Max pages to scan** pages of 100 per award type, counting awards skipped because earlier runs returned them. With a long look-back and broad filters, older late-reported awards can sit beyond the page limit and be missed; the status message says when a run stopped at the page limit. Narrow the filters until it doesn't.
- NAICS, PSC and set-aside filters apply to contracts and IDVs only; grants have no NAICS or PSC.
- Agency names must match USAspending's spelling exactly.

### FAQ

**How is this different from an expiring-contracts radar?** This feed looks backward: who just won. A recompete radar looks forward: which contracts are ending and who holds them now.

**Are people's names included?** The Actor is built to leave them out. It never outputs executive or officer names and pay, street addresses, phone numbers or email addresses. Grants are searched only among organization categories. Contract, IDV and subcontract rows whose recipient name looks like a person's name (no business word such as LLC, Inc, Corp, Co or Services) are dropped and not charged; the run summary says how many. Descriptions that look like they name a person (case captions such as "v." or "in re", honorifics such as Mr. or Dr., personal-services, staff, tuition, witness or fellowship awards) are blanked, and `descriptionSuppressed` is `true` on those rows. Winner names are otherwise the legal entity names as published, so a company name can contain a founder's name.

**Why is a winner's address only city, state and ZIP?** Many small businesses are registered at a home address, so the Actor never outputs street addresses.

**What is a UEI?** The Unique Entity ID from SAM.gov, the federal government's ID for every registered contractor. Use it to match winners to your CRM.

**Does "New since last run" miss anything?** It can. It remembers every award it returned under the cursor name for the length of your look-back window, so an award reported a few days or weeks late still comes through once, without duplicates. It misses awards reported later than your look-back (Defense awards arrive about 90 days late, so use 100 days or more for them) and, with broad filters, older awards beyond the page limit. See Limits.

### Data source and responsible use

Data comes from the USAspending.gov public API (version 2), which needs no key. It is U.S. government data and in the public domain. The Actor identifies itself with a company name and contact email, keeps to a few requests per second, and stops if the API signals throttling. Output is limited to business-entity and award facts: recipients that look like individuals are dropped, descriptions that look like they name a person are blanked, no contact details, and addresses at city, state, ZIP and country level only. This is an **unofficial** tool, **not affiliated with** or endorsed by USAspending.gov, the U.S. Department of the Treasury or any federal agency. Award data is reported by agencies and can contain errors.

### Support

Found a bug or need a field? Open an issue on this Actor's **Issues** tab and we'll respond there.

*Maintained by Saiber Operations LLC.*

# Changelog

This Actor's version history is a separate document: https://apify.com/saiberops/federal-award-winners-feed/changelog.md

# Actor input Schema

## `mode` (type: `string`):

latest: awards from the last N days. newSinceLastRun: only awards your previous runs didn't return (use it on a schedule). dateRange: a fixed start and end date (up to 366 days per run).

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

Calendar days including today. Up to 90 for 'latest', up to 180 for 'newSinceLastRun'. Defense awards appear about 90 days after signing: to get them with 'newSinceLastRun', use 100 or more and narrow filters (NAICS, agency, state).

## `startDate` (type: `string`):

First date to include, YYYY-MM-DD.

## `endDate` (type: `string`):

Last date to include, YYYY-MM-DD. Defaults to today.

## `dateBasis` (type: `string`):

newAwards: the base award was signed in the window (new wins only). allActions: any award with an obligation or modification in the window (also catches option exercises and add-on funding).

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

Contracts (purchase orders, delivery orders, definitive contracts, BPA calls), IDVs (new IDIQs, GWACs, schedules, BPAs) and grants (block, formula and project grants, cooperative agreements). Grants are searched among organizations only; contract and IDV rows whose recipient name looks like a person's are dropped (not charged).

## `includeSubawards` (type: `boolean`):

Also returns subcontracts that prime contractors reported in the window (who the primes are hiring). Charged per subaward row (see Pricing).

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

2- to 6-digit NAICS codes or prefixes, for example 541512 or 23 (construction). Contracts only. Leave empty for all industries.

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

4-character PSC codes such as DA01 (matched by USAspending) or shorter prefixes such as D or R4 (matched by the Actor). Contracts only.

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

Exact top-tier agency names as USAspending writes them, for example Department of Defense, Department of Homeland Security. Leave empty for all.

## `subAgencies` (type: `array`):

Exact sub-tier names, for example U.S. Army Corps of Engineers, Federal Emergency Management Agency.

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

Match the agency that made the award (usual) or the agency that pays for it.

## `recipientStates` (type: `array`):

Two-letter codes of the winning company's location, for example GA, FL. Use this for territory-based sales lists.

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

Two-letter codes where the work is performed.

## `recipientTypes` (type: `array`):

Keep winners with any of these business types, for example small or women-owned businesses.

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

Keep contracts awarded under these set-asides (contracts only). Leave empty for all.

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

Skip awards below this amount. Leave empty for no minimum.

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

Skip awards above this amount. Leave empty for no maximum.

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

Words searched by USAspending across award descriptions and other award text, including recipient names, for example drone, janitorial. At least 3 characters each.

## `includeContractDetails` (type: `boolean`):

Looks up each contract's set-aside, extent competed, number of offers, parent vehicle, office, parent company and the winner's business types (one extra request per row, no extra charge; slower).

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

The run stops after this many award rows. Each returned award is one charged event.

## `maxSubawards` (type: `integer`):

Upper limit on subaward rows when the subaward add-on is on.

## `cursorName` (type: `string`):

Keeps a separate 'new since last run' position per name, so different scheduled feeds (for example GA construction vs. VA IT) don't share one. Letters, numbers and dashes.

## `maxPagesToScan` (type: `integer`):

Upper limit on 100-row result pages read per award type per run.

## Actor input object example

```json
{
  "mode": "latest",
  "lookbackDays": 7,
  "dateBasis": "newAwards",
  "awardTypes": [
    "contracts"
  ],
  "includeSubawards": false,
  "naicsCodes": [],
  "pscCodes": [],
  "agencies": [],
  "subAgencies": [],
  "agencyRole": "awarding",
  "recipientStates": [],
  "placeOfPerformanceStates": [],
  "recipientTypes": [],
  "setAsideTypes": [],
  "minAmount": 100000,
  "keywords": [],
  "includeContractDetails": false,
  "maxItems": 100,
  "maxSubawards": 200,
  "cursorName": "",
  "maxPagesToScan": 50
}
```

# Actor output Schema

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

No description

## `recipients` (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 = {
    "naicsCodes": [],
    "pscCodes": [],
    "agencies": [],
    "subAgencies": [],
    "recipientStates": [],
    "placeOfPerformanceStates": [],
    "minAmount": 100000,
    "keywords": [],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("saiberops/federal-award-winners-feed").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 = {
    "naicsCodes": [],
    "pscCodes": [],
    "agencies": [],
    "subAgencies": [],
    "recipientStates": [],
    "placeOfPerformanceStates": [],
    "minAmount": 100000,
    "keywords": [],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("saiberops/federal-award-winners-feed").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 '{
  "naicsCodes": [],
  "pscCodes": [],
  "agencies": [],
  "subAgencies": [],
  "recipientStates": [],
  "placeOfPerformanceStates": [],
  "minAmount": 100000,
  "keywords": [],
  "maxItems": 100
}' |
apify call saiberops/federal-award-winners-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,saiberops/federal-award-winners-feed"
        }
    }
}
```

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/nQWPmL41euPCfPR81/builds/TYd6or0eoCKsLjYMj/openapi.json
