# US Federal Contracts (SAM.gov, USAspending) (`jetlaunch/us-federal-contracts-monitor`) Actor

Search US federal contract awards from USAspending.gov by NAICS, PSC, agency, set-aside, state, amount and awardee. No key needed. Business and agency names only.

- **URL**: https://apify.com/jetlaunch/us-federal-contracts-monitor.md
- **Developed by:** [Chris O'Byrne](https://apify.com/jetlaunch) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 contract award records

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

Pull US federal contract awards into one clean table. This Actor reads the USAspending.gov API, needs no API key and no login, and returns business and agency data only: who won, for how much, from which agency, in which NAICS and PSC code, and where the work is performed.

### What can you do with it?

- Find who won federal contracts in your NAICS or PSC code over the last 30 days, and for how much.
- Build a competitor watchlist by searching awards by awardee business name.
- Filter by agency, set-aside type, state of performance and award amount.
- Feed a CRM, spreadsheet or alerting workflow through the Apify API, schedules, webhooks or integrations.

It is built for small government contractors, capture and business development teams, market researchers and journalists who want structured data without writing API code.

### Quick start

1. Open the Input tab. The default is ready to run: awards for NAICS 541511 in the last 30 days, 20 results.
2. Click Start. Results appear in the Output tab and can be downloaded as JSON, CSV or Excel.
3. Change the filters to match your market and raise Max items.

### Input

| Field | What it does |
|---|---|
| Keywords | Matches any keyword in the award text (3+ characters each) |
| NAICS codes, PSC codes | Industry and product/service codes. Short prefixes such as 5415 match all codes starting with them |
| Set-aside types | For example SBA, 8A, HZC, SDVOSBC, WOSB |
| Agency | Top-level awarding agency name or abbreviation, for example DOD |
| Place of performance state | Two-letter code such as VA |
| Last N days, start date, end date | The award date window. USAspending data starts 2007-10-01 |
| New awards only | On by default: only awards first signed in the window |
| Minimum and maximum award amount | In US dollars |
| Awardee business name | Text matched by USAspending against recipient names |
| Sort by | Award amount, start date or last modified, highest first |
| Max items | Cap on records saved and charged, up to 5,000 |

Example input:

```json
{
  "naicsCodes": ["541511"],
  "daysBack": 30,
  "maxItems": 20
}
```

### Output

Each record has these fields: record type, ID, title, agency, sub-agency, NAICS code and description, PSC code and description, set-aside (only when you filter by exactly one), contract award type, start and end dates, last modified, award amount, awardee business name and UEI, place of performance state and city, and a link to the award on USAspending.gov. Fields that do not apply are null.

```json
{
  "recordType": "award",
  "source": "usaspending.gov",
  "id": "75F40126F19011",
  "title": "OII IMPORTS, SIRCE, ALM, OCI, ADMIN DME",
  "agency": "Department of Health and Human Services",
  "subAgency": "Food and Drug Administration",
  "naicsCode": "541511",
  "naicsDescription": "CUSTOM COMPUTER PROGRAMMING SERVICES",
  "pscCode": "DA01",
  "awardType": "BPA CALL",
  "startDate": "2026-09-30",
  "endDate": "2027-09-29",
  "awardAmount": 36453089.55,
  "awardeeName": "REI SYSTEMS, INC.",
  "awardeeUei": "YRNMVN96JC17",
  "placeState": "VA",
  "placeCity": "CHANTILLY",
  "url": "https://www.usaspending.gov/award/CONT_AWD_75F40126F19011_7524_75F40121A00019_7524"
}
```

Only city and state are kept for place of performance. Records with a masked or missing recipient name are skipped and not charged.

### Pricing

Pay per event. You pay only for records saved to your dataset. Empty searches and failed runs cost nothing beyond the small Apify start event.

| Event | Price |
|---|---|
| Contract award record | $0.003 each ($3.00 per 1,000) |

The default run of 20 awards costs $0.06. Set a maximum cost per run in the run options if you want a hard cap.

### Data source and licence

Data comes from the USAspending.gov API (api.usaspending.gov), the US Treasury's public federal spending data published under the DATA Act. No key or login is used, and the Actor spaces its requests politely. Department of Defense awards appear with a delay: in our test a 20-day window returned no new DoD awards, while a 200-day window did. Use a longer window for DoD.

This Actor is not affiliated with, endorsed by or sponsored by the US government or USAspending.gov. Names are used only to describe the data source. Check the source site for any usage notes before republishing.

### FAQ

**Why is the set-aside field empty?** USAspending search results do not include it. You can filter by set-aside, and the output shows the code when you choose exactly one.

**Why did my awardee search return a related company?** USAspending decides how recipient text is matched, and related entities can match. Check the awardee name field.

**Why are fewer awards returned than my Max items?** Your filters matched fewer records, or masked recipients were skipped.

**Can I run it on a schedule?** Yes. Use Apify schedules and compare against the previous dataset downstream.

**Does it cover SAM.gov bid opportunities?** Not in this release.

### Limitations

- Contract award types A, B, C and D (definitive contracts, purchase orders, delivery orders, BPA calls) are included. Grants and loans are not.
- Award data comes from USAspending and can lag the original agency records.

### Support

Open the Issues tab on this Actor page and describe the input you used and what you expected. Source outages or API changes are fixed as quickly as possible.

# Actor input Schema

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

Matches any keyword in the award text (3+ characters each).

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

Industry codes such as 541511. A shorter code like 5415 matches all codes starting with it.

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

Product and service codes such as R499 or D302.

## `setAside` (type: `array`):

Only awards with these set-aside codes. The output shows the set-aside only when you pick exactly one.

## `agency` (type: `string`):

Top-level awarding agency, full name or abbreviation, for example Department of Defense or DOD.

## `state` (type: `string`):

Two-letter US state code such as VA. Filters on where the work is performed.

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

Look back this many days from today (or from the end date). Ignored when a start date is set.

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

First day of the window, YYYY-MM-DD (USAspending data starts 2007-10-01). Leave empty to use Last N days.

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

Last day of the window, YYYY-MM-DD. Defaults to today.

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

On: only awards first signed in the window. Off: any award with activity in the window, including modifications of older awards.

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

Only awards of at least this amount.

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

Only awards of at most this amount.

## `recipientName` (type: `string`):

Text matched against the awardee business name, UEI or DUNS, for example Booz Allen.

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

Awards are returned highest first by the chosen field.

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

Maximum records to save and be charged for (up to 5000).

## Actor input object example

```json
{
  "keywords": [],
  "naicsCodes": [
    "541511"
  ],
  "pscCodes": [],
  "daysBack": 30,
  "newAwardsOnly": true,
  "sortBy": "awardAmount",
  "maxItems": 20
}
```

# Actor output Schema

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

One record per award with agency, NAICS and PSC codes, award amount, awardee business name, place of performance state and city, and a source link.

# 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": [],
    "naicsCodes": [
        "541511"
    ],
    "pscCodes": [],
    "daysBack": 30,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("jetlaunch/us-federal-contracts-monitor").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": [],
    "naicsCodes": ["541511"],
    "pscCodes": [],
    "daysBack": 30,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("jetlaunch/us-federal-contracts-monitor").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": [],
  "naicsCodes": [
    "541511"
  ],
  "pscCodes": [],
  "daysBack": 30,
  "maxItems": 20
}' |
apify call jetlaunch/us-federal-contracts-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jetlaunch/us-federal-contracts-monitor"
        }
    }
}
```

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/QzwbIyRrsgGfNPdau/builds/aTOAOMCqphNtAFehS/openapi.json
