# USAspending Scraper: US Federal Contract Awards & Winners (`latamdatatools/us-federal-contract-awards`) Actor

New US government contract awards from the official USAspending.gov API: winner, UEI, amount, agency, NAICS, PSC, place of performance and parent contract vehicle. Filter by agency, keyword, NAICS, PSC, recipient, amount or state; only new awards since the last run for daily subcontracting leads.

- **URL**: https://apify.com/latamdatatools/us-federal-contract-awards.md
- **Developed by:** [Julian Genuario](https://apify.com/latamdatatools) (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 contract 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

## USAspending Scraper: US Federal Contract Awards & Winners

Find out **who is winning US government contracts, for how much and from which agency**. This Actor reads the **official USAspending.gov API** (US Treasury, public domain) and returns new contract awards with the winning company, its UEI, the amount, agency and sub-agency, NAICS and PSC codes, place of performance and, optionally, the parent contract vehicle (IDIQ, GWAC, schedule) and competition details.

Turn on **"only new"** and schedule it daily: each run returns only awards you have not received yet. Perfect for **subcontracting and teaming leads**, competitor tracking and market research.

### What does USAspending Scraper do?

USAspending Scraper gets new US federal government contract awards from the official USAspending.gov API: winner (recipient), UEI, amount, awarding agency, NAICS, PSC, place of performance and parent contract vehicle. Filter by agency, keyword, NAICS, PSC, recipient, amount or state and get only new awards since the last run for subcontracting and GovCon leads.

### How to use USAspending Scraper

1. Click **Try for free** on this page (a free Apify account is enough to start).
2. Fill in the input (see the examples below) or keep the prefilled example.
3. Click **Start** and wait for the run to finish.
4. Download the results from the **Output** tab as JSON, CSV, Excel or HTML, or read them with the Apify API.
5. Optional: create a **Schedule** to run it daily or weekly, and connect a webhook or an integration (Make, Zapier, n8n, Slack).

### Who uses it

- **Subcontractors and suppliers**: every new award in your NAICS/PSC is a prime contractor that may need partners right now.
- **Business development / capture teams**: follow competitors' wins, agencies' buying patterns and incumbents before a recompete.
- **Sales teams selling to government contractors**: fresh lists of companies that just received funding.
- **Analysts and journalists**: spending by agency, vendor or industry.

### Features

- Filters: **keywords**, **awarding agencies** (names or abbreviations: DOD, VA, GSA, NASA...), sub-agencies, **NAICS** (2-6 digits), **PSC**, place of performance state, minimum/maximum amount.
- **Contracts and orders** (definitive contracts, delivery/task orders, purchase orders, BPA calls) and/or **IDVs** (new GWACs, IDIQs, Federal Supply Schedules, BPAs).
- Date modes: **new awards only** (first signed in the period), any action (includes modifications) or last modified.
- **Track companies**: a list of competitor names or UEIs, from the input, an Apify dataset or a CSV / Google Sheets link.
- **Competition details** (optional): parent vehicle, solicitation ID, extent competed, number of offers, set-aside, pricing type, potential value (base + all options), subaward count.
- **Only new** mode with separate memory per alert name; awards found by several queries appear once.
- Link to the award page on usaspending.gov in every row.

### Input example

```json
{
  "keywords": ["cloud", "cybersecurity"],
  "agencies": ["Department of Homeland Security", "GSA"],
  "naicsCodes": ["541512", "541519"],
  "minAmount": 100000,
  "dateType": "new_awards_only",
  "daysBack": 7,
  "includeDetails": true,
  "onlyNew": true,
  "alertName": "it-leads"
}
```

### Output

```json
{
  "awardId": "89303027FTT000017",
  "generatedAwardId": "CONT_AWD_89303027FTT000017_8900_89303027AMA000070_8900",
  "category": "contract",
  "awardType": "BPA CALL",
  "recipientName": "BLOOMBERG FINANCE LP",
  "recipientUei": "PFDZJZ15N3R1",
  "amountObligated": 50280,
  "description": "4 SUBSCRIPTIONS",
  "baseObligationDate": "2026-10-23",
  "startDate": "2026-10-23",
  "endDate": "2027-10-31",
  "awardingAgency": "Department of Energy",
  "awardingSubAgency": "Department of Energy",
  "naicsCode": "513210",
  "naicsDescription": "SOFTWARE PUBLISHERS",
  "pscCode": "DA10",
  "recipientLocation": { "city": "NEW YORK", "state": "NY", "zip": "10022", "country": "USA" },
  "placeOfPerformance": { "city": "WASHINGTON", "state": "DC", "zip": "20585", "country": "USA" },
  "url": "https://www.usaspending.gov/award/CONT_AWD_89303027FTT000017_8900_89303027AMA000070_8900",
  "parentAwardId": "89303027AMA000070",
  "parentVehicleType": "BPA",
  "extentCompeted": "NOT COMPETED UNDER SAP",
  "numberOfOffers": 1,
  "setAside": "NO SET ASIDE USED.",
  "pricingType": "FIRM FIXED PRICE",
  "potentialValue": 50280,
  "fetchedAt": "2026-10-27T02:08:36.017Z"
}
```

Detail fields (`parentAwardId` to `dateSigned`) appear only with "Include competition details". `amountObligated` is the total obligated so far; `potentialValue` includes all options. Newest first.

### Pricing

Pay per event:

- **USD 3 per 1,000 awards** returned (USD 0.003 each).
- A tiny start fee per run (USD 0.002).

Duplicates across queries and (in "only new" mode) awards already delivered are **not charged**. A run with no new awards costs only the start fee.

### Notes and limits

- Data: USAspending.gov API (official, open, no API key). Requests are paced politely.
- **Reporting lag**: civilian agencies usually appear a few days after signature. **Department of Defense contract data is published with a 90-day delay** by law, so recent DoD awards show up late.
- USAspending search covers awards from 2007-10-01.
- Only contract data is returned (no grants, loans or personal assistance). Executive compensation details are never included.
- Not affiliated with or endorsed by the US Treasury or USAspending.gov.

### FAQ

**Can I call it from my own code or from an AI agent?** Yes. Start runs and fetch results with the Apify API or the JavaScript / Python clients, or use it as a tool from Claude, Cursor and other MCP clients through the Apify MCP server (`mcp.apify.com`).

**Can I run it automatically?** Yes. Create a Schedule in Apify Console (for example every morning) and add a webhook or an integration to get the results where you need them.

**Which export formats are available?** JSON, JSONL, CSV, Excel (XLSX), XML, RSS and HTML table, from the Output tab or the API.

**What does it cost?** See the Pricing section above. You only pay for the events listed there.

### Changelog

- 0.1 (2026-10): first version.

# Actor input Schema

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

Optional. Words searched in the award description and other text fields (at least 3 characters). Several keywords = any of them.

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

Optional. Federal agency names or abbreviations: "Department of Defense", "DOD", "VA", "GSA", "NASA", "Department of Energy"...

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

Optional. Exact sub-agency names, e.g. "Department of the Army", "Federal Acquisition Service".

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

Optional. 2 to 6 digits, e.g. 541512 (computer systems design) or 5415 (all computer services).

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

Optional. Product and Service Codes, e.g. DA01, R425, 7030.

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

Optional. Two-letter state codes: VA, TX, CA...

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

Optional. 0 = no minimum.

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

Optional. 0 = no maximum.

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

Contracts (definitive contracts, delivery/task orders, purchase orders, BPA calls) and/or IDVs (new contract vehicles: GWACs, IDIQs, Federal Supply Schedules, BPAs, BOAs).

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

New awards only (first signed in the period, best for leads), any action in the period (includes modifications of older awards) or last modified.

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

Used when no "from" date is given. USAspending usually publishes contract data a few days after signature.

## `fromDate` (type: `string`):

Optional. Earliest 2007-10-01.

## `toDate` (type: `string`):

Optional. Default: today.

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

Optional. Track awards won by specific companies or competitors: names or UEIs, one per line. Each one is searched separately with the other filters.

## `datasetId` (type: `string`):

Optional. Apify dataset with company names or UEIs (max 500).

## `csvUrl` (type: `string`):

Optional. Public CSV or Google Sheets link shared as "Anyone with the link".

## `recipientField` (type: `string`):

Column (CSV) or field (dataset) with the company name or UEI.

## `includeDetails` (type: `boolean`):

One extra request per award: parent contract vehicle (IDIQ/GWAC), solicitation ID, extent competed, number of offers, set-aside, pricing type, potential value and subaward count.

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

Return only awards not delivered in earlier runs with the same alert name. Schedule it daily.

## `alertName` (type: `string`):

Separate memory per alert.

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

Total cap.

## Actor input object example

```json
{
  "keywords": [
    "software"
  ],
  "agencies": [
    "Department of Energy"
  ],
  "minAmount": 0,
  "maxAmount": 0,
  "awardCategories": [
    "contracts"
  ],
  "dateType": "new_awards_only",
  "daysBack": 7,
  "recipientField": "recipient",
  "includeDetails": false,
  "onlyNew": false,
  "alertName": "default",
  "maxItems": 1000
}
```

# Actor output Schema

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

No description

## `runSummary` (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 = {
    "keywords": [
        "software"
    ],
    "agencies": [
        "Department of Energy"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("latamdatatools/us-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 = {
    "keywords": ["software"],
    "agencies": ["Department of Energy"],
}

# Run the Actor and wait for it to finish
run = client.actor("latamdatatools/us-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 '{
  "keywords": [
    "software"
  ],
  "agencies": [
    "Department of Energy"
  ]
}' |
apify call latamdatatools/us-federal-contract-awards --silent --output-dataset

```

## MCP server setup

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