{
  "openapi": "3.0.1",
  "info": {
    "title": "Federal Award Monitor (USAspending) — New Contracts, No Login",
    "description": "Watch recipients, agencies, NAICS, PSC or keywords on USAspending and get only NEW or modified federal contracts, grants, loans and IDVs since the last run, with amount, UEI, place of performance and parent award. Daily schedule. No login. MCP-ready. $10 per 1,000 alerts.",
    "version": "1.0",
    "x-build-id": "2UdPTBGb8HrBIuhTA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/chimerical_quicklime~federal-award-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-chimerical_quicklime-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/chimerical_quicklime~federal-award-monitor/runs": {
      "post": {
        "operationId": "runs-sync-chimerical_quicklime-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/chimerical_quicklime~federal-award-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-chimerical_quicklime-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": {
          "recipients": {
            "title": "Recipients (vendor / grantee names)",
            "type": "array",
            "description": "Watch these recipients, e.g. \"Lockheed\", \"Booz Allen\", \"University of Texas\". Partial names match (USAspending recipient search). Each name is its own watch item; a match is tagged matchedFilter: \"recipient:<name>\". Empty = no recipient restriction.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Awarding agencies (top-tier)",
            "type": "array",
            "description": "Top-tier awarding agency names, e.g. \"Department of Defense\", \"Department of Veterans Affairs\", \"General Services Administration\", \"Department of Health and Human Services\". Sub-tier agencies (e.g. NIH, Navy) are not accepted; use their department. Abbreviations like DOD, VA, GSA, HHS, DHS, NASA are resolved automatically. Applies to every watch item. Empty = all agencies.",
            "default": [
              "Department of Defense"
            ],
            "items": {
              "type": "string"
            }
          },
          "naicsCodes": {
            "title": "NAICS codes",
            "type": "array",
            "description": "Watch these NAICS codes, e.g. 541512, 541519, 236220. 2-6 digit prefixes are accepted (54 = all professional services). Each code is its own watch item (matchedFilter: \"naics:<code>\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "pscCodes": {
            "title": "PSC codes",
            "type": "array",
            "description": "Watch these Product/Service Codes, e.g. R425, D302, 7030. A 1-2 character prefix matches the whole family (D = all IT services). Each code is its own watch item (matchedFilter: \"psc:<code>\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Watch these terms in award descriptions, e.g. \"radar\", \"cloud migration\", \"zero trust\". Each keyword is its own watch item (matchedFilter: \"keyword:<term>\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "awardTypes": {
            "title": "Award types",
            "type": "array",
            "description": "Groups: contracts (A BPA call, B purchase order, C delivery order, D definitive contract), grants (02 block, 03 formula, 04 project, 05 cooperative agreement), loans (07 direct, 08 guaranteed), idvs (IDV_A GWAC, IDV_B IDC, IDV_C FSS, IDV_D BOA, IDV_E BPA). Group names or raw codes are accepted.",
            "default": [
              "contracts"
            ],
            "items": {
              "type": "string"
            }
          },
          "minAmount": {
            "title": "Minimum award amount (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Ignore awards below this obligated amount. 0 = no minimum.",
            "default": 0
          },
          "lookbackDays": {
            "title": "Lookback window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only consider awards with a transaction (new award or modification) dated within this many days. Agencies report to USAspending with a delay (most within 30 days; Department of Defense up to 90 days), so keep the window wide; the seen-state prevents duplicates.",
            "default": 7
          },
          "includeDetails": {
            "title": "Fetch award details",
            "type": "boolean",
            "description": "Fetch each emitted award's detail record (recipient UEI and location, total obligation, period of performance, parent IDV, funding agency). One extra request per emitted award.",
            "default": true
          },
          "maxNewPerFilter": {
            "title": "Max new/modified awards per watch item",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop scanning a watch item (one recipient, NAICS, PSC or keyword) after emitting this many awards. Awards beyond the cap stay unseen and come out on the next run.",
            "default": 10
          },
          "maxItems": {
            "title": "Max awards per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Overall cap on emitted awards per run across all watch items.",
            "default": 10
          },
          "firstRunMode": {
            "title": "First run mode",
            "enum": [
              "emitAll",
              "baseline"
            ],
            "type": "string",
            "description": "What to do when the monitor has no saved state yet. emitAll: treat every current match as new and emit it (good for a one-off pull or a first test). baseline: silently record every current match as seen and emit nothing, so the next scheduled run reports only what changed since.",
            "default": "emitAll"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. After each run a JSON summary {monitorId, runAt, newCount, updatedCount, awards[first 50]} is POSTed here (Slack/Zapier/Make/your API).",
            "default": ""
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this watchlist. Each monitor ID keeps its own seen-state in a key-value store named award-monitor-<hash>, so you can run several profiles (e.g. \"competitors-dod\", \"it-naics-civilian\") side by side.",
            "default": "default"
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}