# USAspending Scraper: US Federal Contract & Grant Awards (`nexus-scrapers/usaspending-awards`) Actor

Search USAspending.gov, the official source of US federal spending: contract awards, IDVs, grants and loans. Filter by agency, NAICS, PSC, recipient, state, amount or date and get recipients, amounts and descriptions for competitor and market research. JSON, CSV or Excel. No API key.

- **URL**: https://apify.com/nexus-scrapers/usaspending-awards.md
- **Developed by:** [Nexus Scrapers](https://apify.com/nexus-scrapers) (community)
- **Categories:** Lead generation, Business, AI
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 us federal 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

## USAspending Scraper - US Federal Contract, Grant & Loan Awards

Search and export **US federal awards** from [USAspending.gov](https://www.usaspending.gov), the official public record of federal spending, as clean, normalized JSON, CSV or Excel. Get **contract awards, IDVs (GWAC, IDC, FSS schedules), grants, loans and other assistance** and filter by keyword, awarding agency, recipient name or UEI, **NAICS**, **PSC**, state of performance, amount and date. Results come newest first. No API key, no proxy, no browser and no login needed.

The Actor calls the official, documented USAspending **open API**. Each result follows the same **tender schema v1** used by the other Actors of this procurement family (EU TED, UK Find a Tender / Contracts Finder), with the winner in `awardInfo`, so US awards and European tenders can be loaded into one table.

### Who is it for

- **Government contractors and subcontractors** looking for who just won which federal contract (competitor and teaming-partner intelligence), by NAICS, PSC, agency or state.
- **Business development and sales teams** selling to the federal government: find the buyers, offices and contract vehicles that purchase what you sell, and recipients with fresh awards.
- **Analysts, journalists and researchers** following federal spending, grants and loans by agency, recipient, program or place.
- **AI agents and MCP users**: the dataset schema describes every field, so an agent can ask in plain language (see [API, MCP and AI agents](#api-mcp-and-ai-agents)).

### What you get

One dataset item per award, with:

- award id (PIID or FAIN), USAspending id, award type (contract: BPA call, purchase order, delivery order, definitive contract; grants, loans, IDVs), description and the link to the USAspending award page
- **recipient** (winner) name, UEI and location, **awarded amount** in USD, signing date and period of performance
- awarding agency and sub-agency (with codes), funding agency
- **NAICS and PSC** codes with descriptions (contracts and IDVs), Assistance Listing programs (grants and loans), place of performance (state, city, county, ZIP)
- optional **award details** (`includeDetails`): extent of competition, solicitation procedures, set-aside, pricing type, number of offers, potential total value with options, parent contract, awarding office, recipient business categories

Street addresses and executive officer names or compensation are **not** copied. The full field reference is in [SCHEMA.md](./SCHEMA.md) and in the Actor's dataset schema.

### Input

All filters are optional and combined with AND. The defaults return the 20 most recently updated contract awards of the last 7 days in a few seconds.

| Field | Description |
|---|---|
| `awardCategory` | `contracts` (default), `idvs`, `grants`, `direct-payments`, `other-assistance`, `loans`. The API cannot mix categories, so a run reads one |
| `awardTypeCodes` | Optional subset of the category, e.g. `["C","D"]` (delivery orders and definitive contracts) |
| `keyword` | Words or phrases; comma-separated alternatives match any (`solar, photovoltaic`) |
| `daysBack` | Active in the last N days (default 7, 0 = no limit) |
| `dateFrom` / `dateTo` | Explicit period `YYYY-MM-DD` (earliest supported date 2007-10-01), overrides `daysBack` |
| `dateType` | `action_date` (default: any new award or modification in the period), `new_awards_only`, `date_signed`, `last_modified_date` |
| `awardingAgency` / `awardingSubAgency` | Exact agency names, e.g. `Department of Homeland Security` / `U.S. Coast Guard` |
| `recipient` | Recipient name or 12-character UEI |
| `naicsCodes` / `pscCodes` | NAICS (prefix match, `5415`) and PSC (`D302`) codes, contracts and IDVs |
| `placeOfPerformanceStates` | Two-letter state / territory codes |
| `minAmount` / `maxAmount` | Amount range in USD |
| `sortBy` | `lastModified` (default, newest update first), `baseDate` (newest signed first), `amount` (largest first) |
| `includeDetails` | Add the award detail block (`usaDetails`), one extra request per award, about 0.6 s each |
| `maxItems` | Maximum results (default 20, maximum 50,000) |

#### Example: new IT-services contracts in Virginia and Texas above 100,000 USD

```json
{
  "naicsCodes": ["5415"],
  "placeOfPerformanceStates": ["VA", "TX"],
  "minAmount": 100000,
  "dateType": "new_awards_only",
  "daysBack": 30,
  "maxItems": 200
}
```

#### Example: what has a competitor won recently

```json
{ "recipient": "Booz Allen Hamilton", "daysBack": 90, "maxItems": 100, "includeDetails": true }
```

#### Example: cybersecurity awards at the Department of Homeland Security

```json
{ "keyword": "cybersecurity, zero trust", "awardingAgency": "Department of Homeland Security", "daysBack": 60, "maxItems": 100 }
```

#### Example: grants from one agency

```json
{ "awardCategory": "grants", "awardingAgency": "National Science Foundation", "daysBack": 120, "maxItems": 100 }
```

### Output example

Real record (delivery order updated on 3 November 2026), abridged:

```json
{
  "schemaVersion": "1.0",
  "source": "usaspending",
  "sourceId": "CONT_AWD_47QSSC27F0RQS_4732_47QSWA22D0009_4732",
  "url": "https://www.usaspending.gov/award/CONT_AWD_47QSSC27F0RQS_4732_47QSWA22D0009_4732",
  "noticeType": "contract-award",
  "noticeTypeCode": "C",
  "contractNature": "supplies",
  "title": "TOWEL,MACHINERY WIP",
  "buyer": { "name": "General Services Administration", "country": "US", "city": null, "nutsCode": null, "buyerType": "central-government" },
  "cpvCodes": [],
  "publicationDate": "2026-11-03",
  "awardInfo": {
    "winners": [{ "name": "NATIONAL INDUSTRIES FOR THE BLIND", "country": "US" }],
    "awardedValue": { "amount": 208.44, "currency": "USD" },
    "awardDate": "2026-11-01"
  },
  "placeOfPerformance": { "country": "US", "city": "ALEXANDRIA", "nutsCode": null },
  "usaAwardId": "47QSSC27F0RQS",
  "usaAwardingSubAgency": "Federal Acquisition Service",
  "usaRecipientUei": "E8QNBC287DY4",
  "usaNaics": { "code": "423850", "description": "SERVICE ESTABLISHMENT EQUIPMENT AND SUPPLIES MERCHANT WHOLESALERS" },
  "usaPsc": { "code": "7910", "description": "FLOOR POLISHERS AND VACUUM CLEANING EQUIPMENT" },
  "usaPlaceOfPerformance": { "country": "US", "state": "VA", "city": "ALEXANDRIA", "county": "ALEXANDRIA CITY", "zip5": "22305" },
  "usaPeriodOfPerformance": { "startDate": "2026-11-01", "endDate": "2026-11-08", "lastDateToOrder": null },
  "usaLastModified": "2026-11-03 00:04:25"
}
```

Fields starting with `usa` are USAspending-specific extras; all other fields are shared with the other procurement Actors (`cpvCodes` is always empty here: US awards use NAICS and PSC).

### Use cases

- **Competitor tracking**: every new award and modification of a given recipient, with agency, amount and period.
- **Lead generation**: companies that just won federal contracts (subcontracting, teaming, financing, insurance, recruiting offers).
- **Market sizing**: spending by agency, NAICS, PSC or state over a period.
- **Recompete and renewal planning**: period of performance end dates and potential end date with options (`includeDetails`).
- **Grant and loan research**: recipients, programs (Assistance Listings) and amounts.
- **AI agents (MCP)**: ask in natural language, get structured awards back.

### Pricing

Pay only for the results you get. Set **Maximum results** (and the run's maximum cost) to control spending: the Actor stops as soon as either limit is reached. Runs that find no awards return no results and charge nothing. See the Pricing tab of this Actor for the current price.

### API, MCP and AI agents

**Apify API (Python)**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("nexus-scrapers/usaspending-awards").call(run_input={
    "naicsCodes": ["5415"], "daysBack": 7, "minAmount": 500000, "maxItems": 50,
})
for award in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(award["publicationDate"], award["awardInfo"]["winners"][0]["name"], award["awardInfo"]["awardedValue"]["amount"])
```

**Apify API (JavaScript)**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('nexus-scrapers/usaspending-awards').call({ keyword: 'drone', maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**MCP and AI agents.** Apify exposes Actors as MCP tools through the [Apify MCP server](https://mcp.apify.com). Add `https://mcp.apify.com` (with `?actors=nexus-scrapers/usaspending-awards`) to Claude, Cursor, VS Code or any MCP client, authorize with your Apify account, and ask for example: "Which companies won NASA contracts above 1 million dollars this month?" or "List grants awarded by the National Science Foundation in Texas in the last 90 days". The input and dataset schemas tell the agent every parameter and field.

### FAQ

**Do I need an API key?** No. USAspending's API is open and needs no registration.

**Is the data official?** Yes. It comes from the Bureau of the Fiscal Service's USAspending.gov API. Every record links to the official award page.

**What does "amount" mean?** For contracts, IDVs and grants it is the total obligated to date on the award (`Award Amount`), which grows with modifications; it is not the contract ceiling. The potential value with all options is in `usaDetails.potentialTotalValue` (with `includeDetails`). For loans it is the loan value. Many IDVs show 0 because orders carry the money.

**What do the date options mean?** The default `action_date` returns awards with any action (new award or modification) in the period, ordered by the time the award record was last updated. `new_awards_only` returns only awards first signed in the period. `publicationDate` is the date of the last update; `awardInfo.awardDate` is the signing date of the base award.

**Why are there so few Department of Defense awards in the last weeks?** DoD contract awards are published with a delay. In our check on 4 November 2026 new DoD contracts appeared only up to late July 2026. Use older periods to see them.

**How fresh is the data?** USAspending is updated daily; the Actor queries it live.

**Can I get more than 10,000 results?** Yes, up to 50,000 per run. The API stops paging at 10,000 results per query, so for larger requests the Actor first counts matches and splits the date range into windows that fit, reading newest first. If a single day alone has more than 10,000 matches (for example the end of the fiscal year), it keeps paging beyond the documented limit, which works in practice but is not guaranteed; the run status says when this happened. You can also split by date range or add filters yourself.

**Can I mix contracts and grants in one run?** No, the API does not allow it. Run once per `awardCategory`.

**What is the difference between PIID, FAIN and UEI?** PIID is the contract number, FAIN the grant number, UEI the 12-character Unique Entity ID of the recipient (it replaced the DUNS number in 2022).

**Does it include subawards?** No. Only prime awards.

**Does it include personal data?** Only what USAspending publishes about organisations. Street addresses and officer names or pay are left out. USAspending redacts individual recipients of assistance itself.

### Data source, licence and terms

Data come from [USAspending.gov](https://www.usaspending.gov) and its [open API](https://api.usaspending.gov), run by the US Department of the Treasury (Bureau of the Fiscal Service) under the DATA Act. Federal government data published for public use; USAspending's source code is released under CC0. USAspending asks for no key and publishes no fixed rate limit, and the Actor is a polite client (descriptive User-Agent, request pacing, back-off on 429/5xx). The Actor is an independent tool and is not affiliated with or endorsed by the US Government. Check USAspending's [data sources and notes](https://www.usaspending.gov/about) for caveats about data quality and delays.

### Limitations

- Prime awards only; subawards are not included.
- The API cannot mix award categories in one search; one category per run.
- `Award Amount` is the amount obligated so far, not the contract ceiling.
- Agency filters need the exact agency name as in USAspending.
- The API does not return the action date of the latest transaction, so results are ordered by the last-modified time of the award record, which is the closest available measure.
- Department of Defense awards appear with a delay of about three months.
- Some assistance records have no award type text (`noticeTypeCode` is then `null`).
- `includeDetails` adds one request per award and is much slower (about 0.6 s per award).

# Actor input Schema

## `awardCategory` (type: `string`):

Which kind of award to read. The API cannot mix categories in one search, so a run reads one category. Contracts (types A-D) by default.

## `awardTypeCodes` (type: `array`):

Restrict to some award type codes of the chosen category, e.g. \['C','D'] for delivery orders and definitive contracts. Leave empty for all types of the category. Codes: contracts: A, B, C, D; idvs: IDV_A, IDV_B, IDV_B_A, IDV_B_B, IDV_B_C, IDV_C, IDV_D, IDV_E; grants: 02, 03, 04, 05, F001, F002; direct-payments: 06, 10, F006, F007; other-assistance: 09, 11, -1, F005, F008, F009, F010; loans: 07, 08, F003, F004.

## `keyword` (type: `string`):

Words or phrases searched in the award description and other text fields. Separate alternatives with a comma: 'solar, photovoltaic' matches awards containing either.

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

Only awards with activity (see 'Date type') in the last N days. Ignored if 'Date from' or 'Date to' is set. Use 0 for no date limit. Note: Department of Defense awards typically show up with a delay of about three months.

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

Start of the period, YYYY-MM-DD (not earlier than 2007-10-01). Overrides 'last N days'.

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

End of the period (inclusive), YYYY-MM-DD.

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

Which date the period applies to: any action on the award (new award or modification), only newly signed awards, the signing date, or the last-modified date of the record.

## `awardingAgency` (type: `string`):

Top-tier awarding agency, exact name as in USAspending, e.g. 'Department of Homeland Security', 'General Services Administration', 'National Aeronautics and Space Administration'.

## `awardingSubAgency` (type: `string`):

Sub-tier awarding agency, exact name, e.g. 'Federal Acquisition Service', 'U.S. Coast Guard', 'Department of the Army'.

## `recipient` (type: `string`):

Recipient (winner) name or 12-character Unique Entity ID (UEI). Names are matched as text, so 'Lockheed Martin' also finds subsidiaries with that text in their name.

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

North American Industry Classification System codes with prefix matching: '5415' matches every 5415xx code (computer systems design). Contracts and IDVs only.

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

Product and Service Codes, exact codes such as 'D302' (IT systems development) or 'R425' (engineering and technical services). Contracts and IDVs only.

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

Only awards performed in one of these US states or territories.

## `minAmount` (type: `number`):

Minimum award amount in US dollars (total obligated so far for contracts and grants; loan value for loans).

## `maxAmount` (type: `number`):

Maximum award amount in US dollars.

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

Order of the results. Most recently updated first by default.

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

Fetch the award detail page of every result (one extra request each, slower): competition type, set-aside, pricing type, number of offers, potential total value with options, parent contract, awarding office, recipient business categories. Output goes in 'usaDetails'.

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

Maximum number of awards to return. You are charged per result, so keep this low while testing. Above 10,000 the Actor splits the date range automatically.

## Actor input object example

```json
{
  "awardCategory": "contracts",
  "awardTypeCodes": [
    "C",
    "D"
  ],
  "keyword": "cybersecurity, zero trust",
  "daysBack": 7,
  "dateFrom": "2026-09-01",
  "dateTo": "2026-09-30",
  "dateType": "action_date",
  "awardingAgency": "Department of Homeland Security",
  "awardingSubAgency": "U.S. Coast Guard",
  "recipient": "Lockheed Martin",
  "naicsCodes": [
    "5415",
    "541512"
  ],
  "pscCodes": [
    "D302",
    "R425"
  ],
  "placeOfPerformanceStates": [
    "TX",
    "VA"
  ],
  "minAmount": 100000,
  "maxAmount": 5000000,
  "sortBy": "lastModified",
  "includeDetails": false,
  "maxItems": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

All awards in the default dataset, opened on the Overview table (updated, award id, description, agency, recipient, amount, link).

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

The same dataset opened on the Recipients view: recipient, UEI, amount, signing date, sub-agency, NAICS and PSC.

# 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 = {
    "awardCategory": "contracts",
    "daysBack": 7,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexus-scrapers/usaspending-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 = {
    "awardCategory": "contracts",
    "daysBack": 7,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("nexus-scrapers/usaspending-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 '{
  "awardCategory": "contracts",
  "daysBack": 7,
  "maxItems": 20
}' |
apify call nexus-scrapers/usaspending-awards --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexus-scrapers/usaspending-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/rNfNO25AFgVyW1zhM/builds/tkRENLq8taqRJbxh7/openapi.json
