# US Federal Contract Award Monitor (`lowlanddata/usa-federal-award-monitor`) Actor

Get alerted the moment a new US federal award matching your business is posted. Filter by NAICS, agency, recipient company and amount; alerts only on never-seen awards via the official USAspending API. Organization-level data, no individuals.

- **URL**: https://apify.com/lowlanddata/usa-federal-award-monitor.md
- **Developed by:** [Lowland Data](https://apify.com/lowlanddata) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 baseline awards

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## US Federal Contract Award Monitor

Watches US federal spending for newly posted **awards** matching your profile —
NAICS industry, agency, recipient company, place of performance, minimum amount.
It alerts the moment a matching award is published, and it remembers what it has
already told you — so an alert always means a genuinely new award, never a
re-scrape of last week's list.

It reads the official USAspending.gov API (the congressionally-mandated federal
spending transparency source), and the output is organization-level by nature:
winning company, amount, agency, industry — no individuals. Safe to store, share
with your capture team, or import into a CRM.

This is the **award** side of federal procurement — who _won_. Its sibling, the
[US RFP Monitor](https://apify.com/lowlanddata/us-rfp-monitor), watches the
**opportunity** side — what is being _bid_. Run both for the full pipeline.

### Quick start (30 seconds, no account keys needed)

1. Run the actor with the prefilled input (federal contracts, last 7 days) — it
   finishes in a few seconds and shows a baseline of recent awards.
2. Replace the demo profile with your own: your NAICS codes, agencies, or the
   competitor companies you want to track.
3. Add a **daily schedule** (Actor page → Schedule). From then on, runs are quiet
   until a matching award is actually posted.

### Who uses this

- **A federal contractor's capture team** monitors `naicsCodes: ["541512"]` in
  its lane — every new IT-services award shows which competitor won, at what
  value, from which agency, the week it posts.
- **A subcontractor** watches `recipients: ["Booz Allen", "Leidos"]` — when a
  prime it partners with lands a big award, that is a teaming call to make now.
- **A market analyst** tracks `naicsCodes` + `minAmountUsd: 1000000` across
  agencies as a demand signal — the baseline plus daily deltas is a clean time
  series of who is spending on what.
- **A GovCon BD lead** pairs this with the RFP monitor: opportunities in, awards
  out, one federal pipeline.
- **A supplier** watches `agencies: ["Department of Veterans Affairs"]` +
  keywords for its product category to find newly funded programs to sell into.

### What you get

One JSON item per **event**: a baseline snapshot per award on the first run, then
only transitions — newly posted matching awards, and (opt-in) modifications to
awards you have already seen. A new-award alert looks like:

```json
{
  "awardId": "36C10B18N0003",
  "recipientName": "Example Systems, Inc.",
  "amountUsd": 1511268,
  "awardingAgency": "Department of Veterans Affairs",
  "awardingSubAgency": "Veterans Health Administration",
  "awardType": "DEFINITIVE CONTRACT",
  "naicsCode": "541512",
  "naicsDescription": "COMPUTER SYSTEMS DESIGN SERVICES",
  "pscCode": "D310",
  "startDate": "2026-07-14",
  "endDate": "2031-07-13",
  "lastModifiedDate": "2026-07-16",
  "placeState": "TX",
  "description": "Enterprise IT modernization and cloud migration services",
  "url": "https://www.usaspending.gov/award/CONT_AWD_36C10B18N0003_1443_-NONE-_-NONE-",
  "isBaseline": false,
  "isUpdate": false
}
````

Field honesty notes:

- `recipientName` is the awardee organization as the government publishes it.
  Federal awards are government-to-organization records — there are no contact
  persons in this data.
- `amountUsd` is the current award amount; federal awards get modified over time
  (obligations added), which is what `alertOn: "new-and-updated"` surfaces.
- `naicsCode` / `pscCode` are reusable directly as your input filters.
- Awards post with a lag after the action date — the monitor alerts when
  USAspending publishes the record, as fast as official data allows.

### How much does award monitoring cost?

Pay per outcome — checking costs nothing; you pay when the monitor tells you
something new:

- **New matching award (the alert): $0.02** — also for modification alerts.
- Baseline item (first run only): $0.002.
- Actor start: $0.005. Everything included - no separate platform-usage charges,
  and higher Apify plans get automatic unit-price discounts.

Cost feel: a focused NAICS profile sees a handful of new awards per working day →
roughly **$2–8/month** for complete coverage, with the one-time baseline (say 100
awards) costing about $0.20. A run with zero new matches costs $0.005 all-in.
GovCon intel platforms (GovWin, BGov) charge thousands per year.

#### Why an alert costs more than a scraped row

The store's headline ("from $2.00 / 1,000 baseline results") is what a trial
costs: a 100-award baseline ≈ $0.20. Apify displays every event per 1,000, so the
alert reads "$20.00 / 1,000" next to raw scrapers at $1–3 per 1,000 rows — but
that is a different thing:

- A **raw scraper** sells rows: to monitor with rows you re-download the federal
  award feed every day and diff it yourself.
- **This monitor** sells the transition: it remembers state in your account and
  charges $0.02 exactly when an award you have not seen matches your profile.
  Nobody buys 1,000 alerts a month.

### Not technical? Let your AI assistant set it up

Paste this prompt with a line about your business:

```text
Set up the Apify actor lowlanddata/usa-federal-award-monitor to watch US federal
awards for me. Build the input JSON from my business description:
- awardTypes: usually ["contracts"]; add "grants" if I chase grants
- naicsCodes: the NAICS codes for my industry (e.g. ["541512"] for IT services)
- agencies: specific agencies if I named any (e.g. ["Department of Defense"])
- recipients: competitor or partner companies to track, if I named any
- minAmountUsd: only if I gave a minimum deal size
Leave alertOn, emitBaseline and maxItems at their defaults. Run it once and show
me the baseline as a table (recipient, amount, agency, industry, state, start
date). Then create a daily schedule and set up a notification so I get an email
when a run produces items.
```

***

### Coverage — measured, not promised

- **Source:** the official USAspending.gov award-search API, keyless. Covers all
  federal award types (contracts, grants, IDVs, loans, direct payments) government-
  wide.
- Awards appear on USAspending with a lag after the action date (the federal
  reporting cycle); the monitor is as current as the official data.
- **Server-side filters** (award type, NAICS, PSC, agency, recipient, state) run
  in the API query; keywords and the amount floor run client-side.
- A profile broader than ~5,000 awards per run is truncated honestly (the run
  status says so) — narrow it.

### How the monitor thinks

- **First run = baseline.** It fetches your profile's matches from the last
  `lookbackDays` (default 7), pushes them flagged `isBaseline: true` at the low
  baseline price, and memorizes them. `emitBaseline: false` seeds silently.
- **After that, only transitions.** Each run continues from the previous run (one
  day of overlap; the memory absorbs duplicates) and pushes only awards it has
  never alerted. Modifications alert as `isUpdate: true` when
  `alertOn: "new-and-updated"`; with the default they stay silent but are
  remembered.
- **Editing the profile starts a fresh baseline** — matching-relevant inputs are
  the profile's identity, so a changed profile can never flood you with alerts
  computed against another profile's memory.
- **Memory** lives in a named key-value store (`stateStoreName`, default
  `usa-award-monitor-state`) in your account. Run several profiles on separate
  schedules against the same store — they never interfere. `resetState: true`
  wipes the current profile's memory.
- Re-running after a crash or overlap re-alerts at most the last few unsaved items
  — state is checkpointed during the run.

### Input reference

| Field            | Type    | Default                     | Notes                                                      |
| ---------------- | ------- | --------------------------- | ---------------------------------------------------------- |
| `awardTypes`     | array   | `["contracts"]`             | Also: `grants`, `idvs`, `loans`, `direct-payments`.        |
| `keywords`       | array   | `[]`                        | OR, case-insensitive, over description/recipient/industry. |
| `naicsCodes`     | array   | `[]`                        | 2-6 digits; server-side filter.                            |
| `pscCodes`       | array   | `[]`                        | Product Service Codes; matches ANY NAICS or PSC.           |
| `agencies`       | array   | `[]`                        | Top-tier awarding agency names.                            |
| `recipients`     | array   | `[]`                        | Recipient (company) name search.                           |
| `states`         | array   | `[]`                        | Place-of-performance state codes.                          |
| `minAmountUsd`   | integer | —                           | Awards without an amount always pass.                      |
| `lookbackDays`   | integer | `7`                         | Baseline reach on the first run (max 90).                  |
| `alertOn`        | string  | `"new"`                     | `"new-and-updated"` adds modification alerts.              |
| `emitBaseline`   | boolean | `true`                      | `false` = silent seeding.                                  |
| `resetState`     | boolean | `false`                     | One-shot: wipe this profile's memory.                      |
| `maxItems`       | integer | `500`                       | Overflow alerts on the next run, never lost.               |
| `stateStoreName` | string  | `"usa-award-monitor-state"` | Only change to fully isolate instances.                    |

### Scheduling and API use

Run it daily and pair the schedule with a Monitoring alert on "dataset items > 0"
to get an email exactly when an award matched.

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/lowlanddata~usa-federal-award-monitor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"naicsCodes": ["541512"], "minAmountUsd": 1000000}'
```

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lowlanddata/usa-federal-award-monitor').call({
  naicsCodes: ['541512'],
  agencies: ['Department of Veterans Affairs'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); // only new awards since the last run
```

```python
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("lowlanddata/usa-federal-award-monitor").call(run_input={
    "naicsCodes": ["541512"],
    "recipients": ["Example Corp"],
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

Daily runs finish in well under a minute, comfortably inside the 300s sync-call
wall.

### Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this monitor as a tool through
Apify's hosted MCP server: the agent builds the profile from a plain-language
brief, runs it, and reads the awards back — no glue code.

Claude Code:

```bash
claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/usa-federal-award-monitor"
```

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

```text
https://mcp.apify.com?actors=lowlanddata/usa-federal-award-monitor
```

Sign in with your Apify account when prompted — runs are billed to it. Setup
details per client: [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp),
or start from this actor's own MCP page:
[apify.com/lowlanddata/usa-federal-award-monitor/api/mcp](https://apify.com/lowlanddata/usa-federal-award-monitor/api/mcp).

Prompts that work once connected:

- "Watch federal IT-services contract awards over $1M and show me this week's."
- "Which agencies awarded cybersecurity contracts to my competitors this month?"
- "Track new awards to Example Corp and alert me daily."

### Is it legal to monitor federal awards?

Yes — federal spending data is public by law (the Federal Funding Accountability
and Transparency Act), and USAspending.gov publishes it through an official API
for exactly this reuse. No login walls, no anti-bot bypass — if the API is
unreachable, the run reports it rather than fighting it. The output is
organization-level federal award data by construction.

### Compliance: safe to store, safe to CRM-import

The award-search endpoint returns only organization-level fields — recipient
company, amount, agency, industry codes, dates, place of performance. There are
no contact persons, officers, emails or phone numbers in this data, and an
automated test proves no such field can reach the output. One honest nuance: a
recipient can be a person-named sole proprietorship, as the government officially
publishes it — we map the official recipient-name field only, never an address or
contact.

### FAQ

**Why did my second run return nothing?** Because nothing new matched — that is
the product working. The first run is the baseline; afterwards you only pay for
awards you have not seen.

**Does the output contain individuals?** No — federal award records are
government-to-organization. You get the winning company, not a person.

**How is this different from the RFP monitor?** The RFP monitor watches
*opportunities* (what is being solicited); this watches *awards* (who won). Run
both for the full opportunity-to-award pipeline.

**What does a modification alert mean?** Federal awards get modified — obligations
added, amounts changed. With `alertOn: "new-and-updated"`, a seen award whose
record changes alerts once as `isUpdate: true`.

**How fresh are the alerts?** As fresh as USAspending — awards post with a lag
after the action date. The monitor can't be faster than the official data.

### Troubleshooting

- **"Coverage truncated by the per-run request budget"** — the window matched more
  than ~5,000 awards; narrow the profile or lower `lookbackDays`.
- **"Monitor state record … is not readable"** — the state was written by a newer
  version; run once with `resetState: true` to start a fresh baseline.

Something else off? Open an issue on the actor's Issues tab — reports are read and
answered.

# Actor input Schema

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

Which kinds of federal award to monitor. Default: contracts (the procurement awards most competitive-intel buyers watch).

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

Alert on awards whose description, recipient or industry label contains ANY of these words (case-insensitive). Example: \["cybersecurity", "cloud"]. Leave empty to match everything and filter by NAICS, agency or recipient instead.

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

Industry codes, 2-6 digits. Filters the USAspending query server-side. Example: \["541512", "541519"].

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

Product Service Codes, e.g. \["D310", "R425"]. An award matches when it hits ANY of your NAICS or PSC codes.

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

Only awards from these top-tier awarding agencies (exact agency name). Example: \["Department of Defense", "Department of Veterans Affairs"].

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

Only awards to recipients matching these names - watch specific competitors or partners. Example: \["Booz Allen", "Leidos"]. Matches the recipient name.

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

Two-letter US state codes for where the work is performed, e.g. \["TX", "VA"]. Empty = whole country.

## `minAmountUsd` (type: `integer`):

Only alert on awards of at least this many dollars. Awards without a published amount always pass.

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

How many days of already-posted awards the FIRST run of a profile loads as its baseline. Later runs automatically continue from the previous run with one day of overlap - re-alerting a seen award is impossible.

## `alertOn` (type: `string`):

"new" alerts once per award. "new-and-updated" also alerts when a seen award is modified (marked isUpdate: true), e.g. a new obligation or amount change.

## `emitBaseline` (type: `boolean`):

On the very first run of a profile, push the currently matching awards (flagged isBaseline: true, charged at the lower baseline price). Turn off to seed silently and only ever receive new alerts.

## `resetState` (type: `boolean`):

Discard this profile's memory of already-seen awards and start over with a fresh baseline run. One-shot switch: turn it back off afterwards.

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

Upper bound on items pushed per run (baseline or alerts). Matches beyond the cap are not lost: they alert on the next run.

## `stateStoreName` (type: `string`):

Named key-value store holding the monitor's seen-award memory. Only change this to run fully isolated monitor instances.

## Actor input object example

```json
{
  "awardTypes": [
    "contracts"
  ],
  "lookbackDays": 7,
  "alertOn": "new",
  "emitBaseline": true,
  "resetState": false,
  "maxItems": 10,
  "stateStoreName": "usa-award-monitor-state"
}
```

# Actor output Schema

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

Federal awards matching your profile, one JSON object per award. On the first run: the recent baseline; afterwards: only new (or modified) matches.

# 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 = {
    "awardTypes": [
        "contracts"
    ],
    "lookbackDays": 7,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("lowlanddata/usa-federal-award-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 = {
    "awardTypes": ["contracts"],
    "lookbackDays": 7,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("lowlanddata/usa-federal-award-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "awardTypes": [
    "contracts"
  ],
  "lookbackDays": 7,
  "maxItems": 10
}' |
apify call lowlanddata/usa-federal-award-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lowlanddata/usa-federal-award-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "US Federal Contract Award Monitor",
        "description": "Get alerted the moment a new US federal award matching your business is posted. Filter by NAICS, agency, recipient company and amount; alerts only on never-seen awards via the official USAspending API. Organization-level data, no individuals.",
        "version": "0.1",
        "x-build-id": "hkbKb2a0StCOPyJL9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lowlanddata~usa-federal-award-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lowlanddata-usa-federal-award-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lowlanddata~usa-federal-award-monitor/runs": {
            "post": {
                "operationId": "runs-sync-lowlanddata-usa-federal-award-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lowlanddata~usa-federal-award-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-lowlanddata-usa-federal-award-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "awardTypes": {
                        "title": "Award types",
                        "type": "array",
                        "description": "Which kinds of federal award to monitor. Default: contracts (the procurement awards most competitive-intel buyers watch).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "contracts",
                                "grants",
                                "idvs",
                                "loans",
                                "direct-payments"
                            ],
                            "enumTitles": [
                                "Contracts",
                                "Grants",
                                "IDVs (indefinite-delivery vehicles)",
                                "Loans",
                                "Direct payments"
                            ]
                        },
                        "default": [
                            "contracts"
                        ]
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Alert on awards whose description, recipient or industry label contains ANY of these words (case-insensitive). Example: [\"cybersecurity\", \"cloud\"]. Leave empty to match everything and filter by NAICS, agency or recipient instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "naicsCodes": {
                        "title": "NAICS codes",
                        "type": "array",
                        "description": "Industry codes, 2-6 digits. Filters the USAspending query server-side. Example: [\"541512\", \"541519\"].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "pscCodes": {
                        "title": "PSC codes",
                        "type": "array",
                        "description": "Product Service Codes, e.g. [\"D310\", \"R425\"]. An award matches when it hits ANY of your NAICS or PSC codes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "agencies": {
                        "title": "Awarding agencies",
                        "type": "array",
                        "description": "Only awards from these top-tier awarding agencies (exact agency name). Example: [\"Department of Defense\", \"Department of Veterans Affairs\"].",
                        "items": {
                            "type": "string"
                        }
                    },
                    "recipients": {
                        "title": "Recipients (companies)",
                        "type": "array",
                        "description": "Only awards to recipients matching these names - watch specific competitors or partners. Example: [\"Booz Allen\", \"Leidos\"]. Matches the recipient name.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "states": {
                        "title": "Place-of-performance states",
                        "type": "array",
                        "description": "Two-letter US state codes for where the work is performed, e.g. [\"TX\", \"VA\"]. Empty = whole country.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minAmountUsd": {
                        "title": "Minimum award amount (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only alert on awards of at least this many dollars. Awards without a published amount always pass."
                    },
                    "lookbackDays": {
                        "title": "Baseline lookback (days)",
                        "minimum": 1,
                        "maximum": 90,
                        "type": "integer",
                        "description": "How many days of already-posted awards the FIRST run of a profile loads as its baseline. Later runs automatically continue from the previous run with one day of overlap - re-alerting a seen award is impossible.",
                        "default": 7
                    },
                    "alertOn": {
                        "title": "Alert on",
                        "enum": [
                            "new",
                            "new-and-updated"
                        ],
                        "type": "string",
                        "description": "\"new\" alerts once per award. \"new-and-updated\" also alerts when a seen award is modified (marked isUpdate: true), e.g. a new obligation or amount change.",
                        "default": "new"
                    },
                    "emitBaseline": {
                        "title": "Emit baseline on first run",
                        "type": "boolean",
                        "description": "On the very first run of a profile, push the currently matching awards (flagged isBaseline: true, charged at the lower baseline price). Turn off to seed silently and only ever receive new alerts.",
                        "default": true
                    },
                    "resetState": {
                        "title": "Reset monitor state",
                        "type": "boolean",
                        "description": "Discard this profile's memory of already-seen awards and start over with a fresh baseline run. One-shot switch: turn it back off afterwards.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items per run",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Upper bound on items pushed per run (baseline or alerts). Matches beyond the cap are not lost: they alert on the next run.",
                        "default": 500
                    },
                    "stateStoreName": {
                        "title": "State store name",
                        "type": "string",
                        "description": "Named key-value store holding the monitor's seen-award memory. Only change this to run fully isolated monitor instances.",
                        "default": "usa-award-monitor-state"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
