{
  "openapi": "3.0.1",
  "info": {
    "title": "Federal Contract Opportunities Monitor (SAM.gov, unofficial)",
    "description": "Unofficial SAM.gov contract opportunities monitor. Works with no API key from SAM.gov's official daily Contract Opportunities extract; add a free SAM.gov key for same-day data plus attachment links. Filter by keyword, NAICS, set-aside, state and notice type; get only new or changed notices.",
    "version": "0.1",
    "x-build-id": "NarhzcQaGpC8Vv73x"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wadeworks~federal-contract-opportunities-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wadeworks-federal-contract-opportunities-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/wadeworks~federal-contract-opportunities-monitor/runs": {
      "post": {
        "operationId": "runs-sync-wadeworks-federal-contract-opportunities-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/wadeworks~federal-contract-opportunities-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-wadeworks-federal-contract-opportunities-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": {
          "source": {
            "title": "Data source",
            "enum": [
              "auto",
              "bulk",
              "api"
            ],
            "type": "string",
            "description": "Keyless extract: the full list of active notices that SAM.gov publishes once a day on its Data Services page (updated nightly; no attachment links; descriptions included). Official API: live data via your own key.",
            "default": "auto"
          },
          "apiKey": {
            "title": "SAM.gov public API key (optional)",
            "type": "string",
            "description": "Optional. Leave empty to use the keyless source: SAM.gov's official public daily Contract Opportunities extract (no key, no login). Add your own free personal SAM.gov public API key (Account Details page) to query the live official API instead: same-day notices, attachment links and archived notices. Stored encrypted as a secret and never logged. Do not share keys; rotate every 90 days per SAM.gov Terms of Use. Accounts without a SAM.gov role get 10 requests/day."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Match any keyword in the title/solicitation number and description (keyless mode always has descriptions; API mode only when descriptions are fetched). In API mode a single keyword is also sent to the API title filter.",
            "items": {
              "type": "string"
            }
          },
          "naicsCodes": {
            "title": "NAICS codes",
            "type": "array",
            "description": "NAICS codes. In keyless mode prefixes also work (5415 matches 541511, 541512, ...). In API mode each code costs at least one API request.",
            "items": {
              "type": "string"
            }
          },
          "setAside": {
            "title": "Set-aside",
            "enum": [
              "SBA",
              "SBP",
              "8A",
              "8AN",
              "HZC",
              "HZS",
              "SDVOSBC",
              "SDVOSBS",
              "WOSB",
              "WOSBSS",
              "EDWOSB",
              "EDWOSBSS",
              "LAS",
              "IEE",
              "ISBEE",
              "BICiv",
              "VSA",
              "VSS"
            ],
            "type": "string",
            "description": "One set-aside per run."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Two-letter state code, e.g. IN, sent to SAM.gov's state filter. SAM.gov matches the place of performance and may also match the contracting office's state, so some results may be performed elsewhere. Many notices list no location at all."
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "solicitation",
                "combined_synopsis_solicitation",
                "presolicitation",
                "sources_sought",
                "special_notice",
                "award",
                "justification",
                "surplus_sale",
                "intent_to_bundle"
              ],
              "enumTitles": [
                "Solicitation",
                "Combined Synopsis/Solicitation",
                "Presolicitation",
                "Sources Sought",
                "Special Notice",
                "Award Notice",
                "Justification (J&A)",
                "Sale of Surplus Property",
                "Intent to Bundle (DoD)"
              ]
            }
          },
          "postedWithinDays": {
            "title": "Posted within last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Used when postedFrom is empty.",
            "default": 7
          },
          "postedFrom": {
            "title": "Posted from (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Ranges over 1 year are split automatically."
          },
          "postedTo": {
            "title": "Posted to (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Defaults to today."
          },
          "monitorMode": {
            "title": "Monitor mode (only new/changed)",
            "type": "boolean",
            "description": "Remembers noticeId + content fingerprint in a named key-value store and outputs only new or changed notices.",
            "default": true
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Use different names to keep separate seen-lists for different saved searches.",
            "default": "default"
          },
          "includeAttachments": {
            "title": "Include attachment links",
            "type": "boolean",
            "description": "Include direct download links for notice attachments (resourceLinks). API mode only; the keyless extract does not contain attachment links (the list is empty).",
            "default": true
          },
          "fetchDescriptions": {
            "title": "Fetch descriptions + summary",
            "type": "boolean",
            "description": "API mode only: costs one extra API request per notice. Enable only with a 1,000/day key. In keyless mode descriptions are always included and used for keyword matching and the summary at no extra cost.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results saved to the dataset per run (each result is billed). Use it as a hard cap on cost per run.",
            "default": 500
          },
          "maxApiRequests": {
            "title": "Max API requests per run",
            "minimum": 1,
            "type": "integer",
            "description": "API mode only: safety cap to protect your daily SAM.gov quota. Ignored in keyless mode.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}