{
  "openapi": "3.0.1",
  "info": {
    "title": "US Government RFP Monitor - SAM.gov + State Portals",
    "description": "Get alerted to every new US government RFP that matches your business. Monitors SAM.gov (official API) plus 5 state portals (VA, TX, FL, GA, NY); filters by keywords, NAICS/PSC, agency and set-aside; alerts only on never-seen opportunities.\nClean output, no officer contact data.",
    "version": "0.1",
    "x-build-id": "z1YnvOi10EeZKwcWH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lowlanddata~us-rfp-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lowlanddata-us-rfp-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~us-rfp-monitor/runs": {
      "post": {
        "operationId": "runs-sync-lowlanddata-us-rfp-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~us-rfp-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-lowlanddata-us-rfp-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Alert on opportunities whose title, description or commodity-code labels contain ANY of these words (case-insensitive). Example: [\"cybersecurity\", \"penetration testing\", \"SOC\"]. Leave empty to match everything and filter by codes or agencies instead.",
            "items": {
              "type": "string"
            }
          },
          "samApiKey": {
            "title": "SAM.gov API key",
            "type": "string",
            "description": "Your personal SAM.gov API key (starts with SAM-), required only for the SAM.gov federal source. Free: sam.gov account (via login.gov) > Account Details > re-enter password > copy the Public API Key. Valid 90 days, renewal is copy-paste. Without it the actor still monitors the state portals and skips SAM.gov with a warning. Stored encrypted, never logged. See the README for the step-by-step."
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which procurement sources to monitor. SAM.gov covers all US federal opportunities (needs your free API key); the six keyless state portals cover Virginia, Texas, Florida, Georgia (state + local + K-12), New York and Pennsylvania.",
            "items": {
              "type": "string",
              "enum": [
                "sam.gov",
                "virginia-eva",
                "texas-esbd",
                "florida-mfmp",
                "georgia-gpr",
                "ny-contract-reporter",
                "pa-emarketplace"
              ],
              "enumTitles": [
                "SAM.gov (US federal)",
                "Virginia eVA",
                "Texas ESBD",
                "Florida MFMP",
                "Georgia GPR (state + local + K-12)",
                "New York Contract Reporter",
                "Pennsylvania eMarketplace"
              ]
            },
            "default": [
              "sam.gov",
              "virginia-eva",
              "texas-esbd",
              "florida-mfmp",
              "georgia-gpr",
              "ny-contract-reporter",
              "pa-emarketplace"
            ]
          },
          "naicsCodes": {
            "title": "NAICS codes",
            "type": "array",
            "description": "NAICS industry codes, 2-6 digits, hierarchical: \"5415\" also matches 541511. Applies to SAM.gov records (state portals use other code systems - use keywords for them). Example: [\"541512\", \"541519\"]. Also narrows the SAM.gov API query, saving your daily request budget.",
            "items": {
              "type": "string"
            }
          },
          "pscCodes": {
            "title": "PSC codes",
            "type": "array",
            "description": "Federal Product Service Codes, exact match, e.g. [\"D310\", \"R425\"]. SAM.gov records only. An opportunity matches when it hits ANY of your NAICS or PSC codes.",
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Agencies",
            "type": "array",
            "description": "Only alert on these buying organizations (case-insensitive substring of the agency path). Example: [\"DEPT OF DEFENSE\", \"University of Houston\"].",
            "items": {
              "type": "string"
            }
          },
          "setAsides": {
            "title": "Set-aside types",
            "type": "array",
            "description": "Only alert on set-aside opportunities whose label contains any of these, e.g. [\"small business\", \"8(a)\", \"WOSB\", \"SDVOSB\"]. SAM.gov and Virginia (SWaM) carry set-aside labels; records without one are excluded when this filter is set.",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which notice stages to alert on. Default: the pre-award stages a seller can still act on (solicitations, combined synopsis, presolicitations, sources sought). Add award notices to track who wins instead.",
            "items": {
              "type": "string",
              "enum": [
                "solicitation",
                "combined",
                "presolicitation",
                "sources-sought",
                "special-notice",
                "justification",
                "award"
              ],
              "enumTitles": [
                "Solicitation",
                "Combined synopsis/solicitation",
                "Presolicitation",
                "Sources sought",
                "Special notice",
                "Justification (J&A)",
                "Award notice"
              ]
            },
            "default": [
              "solicitation",
              "combined",
              "presolicitation",
              "sources-sought"
            ]
          },
          "states": {
            "title": "US states",
            "type": "array",
            "description": "Two-letter US state codes, e.g. [\"TX\", \"VA\"]. Filters SAM.gov by place of performance and switches off state portals outside the list. Empty = whole country.",
            "items": {
              "type": "string"
            }
          },
          "lookbackDays": {
            "title": "Lookback window (days)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many days back each run asks SAM.gov for notices. Keep it a little above your run cadence (daily run: 2-3 days) - overlap is safe, the monitor never re-alerts a seen notice.",
            "default": 3
          },
          "alertOn": {
            "title": "Alert on",
            "enum": [
              "new",
              "new-and-updated"
            ],
            "type": "string",
            "description": "\"new\" alerts once per opportunity. \"new-and-updated\" also re-alerts when a seen opportunity is amended (marked isUpdate: true), e.g. a moved deadline or a posted addendum.",
            "default": "new"
          },
          "emitBaseline": {
            "title": "Emit baseline on first run",
            "type": "boolean",
            "description": "On the very first run of a profile, push the currently open matching opportunities (flagged isBaseline: true, charged at the lower baseline price) so you start with today's full picture. 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 opportunities 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). On an alert run, matches beyond the cap alert on the next run. On the very first (baseline) run they are recorded as already seen instead, so raise this before the first run if you need the whole baseline.",
            "default": 500
          },
          "stateStoreName": {
            "title": "State store name",
            "type": "string",
            "description": "Named key-value store holding the monitor's seen-opportunity memory. Only change this to run fully isolated monitor instances.",
            "default": "rfp-monitor-state"
          },
          "reportFailures": {
            "title": "Report failures to the developer",
            "type": "boolean",
            "description": "When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. <b>Your input itself, your results and your identity are never sent, and successful runs send nothing at all.</b> Switch this off and the actor behaves exactly the same.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}