# Federal Contract Awards Search – USAspending Winners & Grants (`gazidev/federal-contract-awards`) Actor

Who won US federal contracts and grants: recipient, UEI, amount, agency, NAICS/PSC, place of performance and dates from the official USAspending.gov API. Filter by keyword, NAICS, agency, state, competitor and amount. $1.50 per 1,000 awards.

- **URL**: https://apify.com/gazidev/federal-contract-awards.md
- **Developed by:** [Cemal Atakli](https://apify.com/gazidev) (community)
- **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

## Federal Contract Awards Search – USAspending Winners & Grants

See **who won US federal contracts and grants**: recipient, UEI, award amount, awarding agency, NAICS and PSC codes, place of performance and dates, straight from the official **USAspending.gov API** (US Department of the Treasury). No API key, no login, no scraping.

Use it for **competitor tracking** (what did my competitors win this month?), **market research** (who wins janitorial contracts in Virginia, and for how much?), **sales leads** (companies that just won a big contract need subcontractors, staff, equipment and insurance) and **grant research**.

**$1.50 per 1,000 awards.** You pay only for awards saved.

### What you can search

- **Award categories:** contracts, IDVs (GWACs, BPAs, IDIQs), grants, loans, direct payments, other assistance.
- **New awards only** (default) or any award with activity (modifications, new money) in your date range.
- **Keywords**, **recipient names** (competitors), **NAICS** and **PSC** codes, **set-aside** codes, **assistance listing (CFDA)** numbers.
- **Awarding agency**, **place of performance state**, **recipient state**, **min/max amount**.
- Sort by amount, award date or last modified date.

### Input examples

New janitorial contracts in Virginia and Maryland in the last 60 days, newest first:

```json
{
  "awardCategories": ["contracts", "idvs"],
  "lastDays": 60,
  "naicsCodes": ["561720"],
  "states": ["VA", "MD"],
  "sortBy": "date"
}
```

What did two competitors win this quarter?

```json
{
  "awardCategories": ["contracts", "idvs"],
  "dateFrom": "2026-07-01",
  "recipientNames": ["Booz Allen", "Leidos"],
  "newAwardsOnly": false
}
```

Broadband grants:

```json
{ "awardCategories": ["grants"], "lastDays": 90, "keywords": ["broadband"] }
```

### Output

Sample (contract):

```json
{
  "awardId": "47PC5227F0001",
  "awardCategory": "contracts",
  "awardType": "DELIVERY ORDER",
  "recipientName": "PORTCO INC",
  "recipientUei": "LVKDTE6J58P5",
  "awardAmount": 8743.88,
  "description": "NFOB FEDERAL ICE AFTER HOURS CUSTODIAL DEPARTMENT OF HOMELAND SECURITY NORFOLK, VIRGINIA ...",
  "startDate": "2026-10-15",
  "endDate": "2027-02-08",
  "baseObligationDate": "2026-10-15",
  "awardingAgency": "General Services Administration",
  "awardingSubAgency": "Public Buildings Service",
  "naicsCode": "561720",
  "naicsDescription": "JANITORIAL SERVICES",
  "pscCode": "S201",
  "pscDescription": "HOUSEKEEPING- CUSTODIAL JANITORIAL",
  "placeOfPerformance": {"city": "NORFOLK", "county": "NORFOLK CITY", "state": "VA", "...": "..."},
  "recipientLocation": {"street": "...", "city": "...", "state": "...", "zip": "..."},
  "url": "https://www.usaspending.gov/award/CONT_AWD_47PC5227F0001_...",
  "recipientProfileUrl": "https://www.usaspending.gov/recipient/.../latest"
}
```

Grant rows have `assistanceListings` (CFDA number and program title) instead of NAICS/PSC. A run summary is saved in the `OUTPUT` record.

### Monitoring

Turn on **Only awards not seen before**, set `lastDays` to 7–14 and schedule the Actor weekly: each run returns only awards you have not received yet (tracked per **State key**).

### Notes

- Civilian contract awards usually appear within days (agencies report them to FPDS). **Department of Defense contract data is published with a 90-day delay** by policy, so recent DoD awards show up later. Assistance (grant) data is reported monthly or bi-weekly and can lag several weeks.
- `awardAmount` is the award's total obligated amount; `totalOutlays` is money actually paid out (often empty for new awards).
- Searches can start no earlier than 2007-10-01 (an API limit).
- Looking for open bids instead of awards? Use [SAM.gov Contract Opportunities](https://apify.com/gazidev/sam-gov-contract-opportunities).

### Pricing

Pay per event: **$0.0015 per award saved** ($1.50 per 1,000), plus a tiny start fee. Error rows are free. Set **Max awards** or a maximum cost per run; the run stops cleanly at that limit.

### Data source and terms

USAspending.gov is the official source of US federal spending data, run by the Department of the Treasury's Bureau of the Fiscal Service. Its data is public and free to use. This Actor is not affiliated with or endorsed by USAspending.gov or the US government.

# Actor input Schema

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

Which kinds of awards to return.

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

Ignored when *Date from* is set. Grant data can lag a few weeks.

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

YYYY-MM-DD (earliest 2007-10-01).

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

YYYY-MM-DD. Default: today.

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

On: awards first made in the date range. Off: any award with a transaction (modification, new money) in the range.

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

Search award descriptions, recipients and codes, e.g. `janitorial`, `cybersecurity`, `body armor` (at least 3 characters).

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

Competitors or prospects, e.g. `Lockheed`, `Booz Allen` (name or UEI).

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

E.g. `541512` or `5415` (contracts and IDVs only).

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

Product/service codes, e.g. `S201`, `D302` (contracts and IDVs only).

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

FPDS type-of-set-aside codes, e.g. `SBA` (small business), `8A`, `HZC` (HUBZone), `SDVOSBC`, `WOSB`.

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

E.g. `93.778`, `10.557` (grants, loans and other assistance only).

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

Exact top-tier agency names, e.g. `Department of Defense`, `Department of Veterans Affairs`, `National Aeronautics and Space Administration`.

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

2-letter codes, e.g. `TX`, `VA`.

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

Where the winning company or organization is located, 2-letter codes.

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

Only awards of at least this amount.

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

Only awards up to this amount.

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

Order of results.

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

Skip awards returned by earlier runs with the same *State key*. Schedule weekly for a competitor or market feed.

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

Separate 'already seen' lists for different searches.

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

Stop after this many awards (0 = all matching). You pay per award saved.

## Actor input object example

```json
{
  "awardCategories": [
    "contracts"
  ],
  "lastDays": 7,
  "newAwardsOnly": true,
  "sortBy": "amount",
  "onlyNew": false,
  "stateKey": "default",
  "maxResults": 20
}
```

# Actor output Schema

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

No description

## `results` (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"
    ],
    "lastDays": 7,
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("gazidev/federal-contract-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"],
    "lastDays": 7,
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("gazidev/federal-contract-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"
  ],
  "lastDays": 7,
  "maxResults": 20
}' |
apify call gazidev/federal-contract-awards --silent --output-dataset

```

## MCP server setup

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