{
  "openapi": "3.0.1",
  "info": {
    "title": "SAM.gov Contract Opportunities Scraper & Monitor - No API Key",
    "description": "SAM.gov Contract Opportunities from the official daily file, no API key: filter by keyword, NAICS, PSC, agency, notice type, set-aside, state and dates. One row per notice with deadline, set-aside, place and SAM.gov link. Monitoring returns only new or updated notices.",
    "version": "0.1",
    "x-build-id": "uEgLL8eiFV7wDxr1M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~sam-gov-opportunities-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-sam-gov-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/neverempty~sam-gov-opportunities-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-sam-gov-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/neverempty~sam-gov-opportunities-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-sam-gov-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only notices where these appear in the title, the solicitation number or the description. Not case-sensitive; a keyword of several words is matched as that exact phrase. One per line. Leave empty for no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "keywordMode": {
            "title": "Keyword matching",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "With several keywords: keep a notice when at least one appears (any) or only when every one appears (all).",
            "default": "any"
          },
          "naicsCodes": {
            "title": "NAICS codes",
            "type": "array",
            "description": "Keep only notices whose NAICS code starts with one of these (2 to 6 digits). 541511 matches that code only; 5415 matches every code that starts with 5415. One per line. Notices with no NAICS code in the file (about 5%) do not match.",
            "items": {
              "type": "string"
            }
          },
          "pscCodes": {
            "title": "PSC (product/service) codes",
            "type": "array",
            "description": "Keep only notices whose Product Service Code (classification code) starts with one of these, for example R499 or D3. One per line. Notices with no code in the file (about 4%) do not match.",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these notice types, as SAM.gov names them. Leave empty for every type (award notices and justifications included).",
            "items": {
              "type": "string",
              "enum": [
                "Solicitation",
                "Combined Synopsis/Solicitation",
                "Presolicitation",
                "Sources Sought",
                "Special Notice",
                "Award Notice",
                "Justification",
                "Modification/Amendment/Cancel",
                "Justification and Approval (J&A)",
                "Consolidate/(Substantially) Bundle",
                "Sale of Surplus Property"
              ]
            }
          },
          "setAsideCodes": {
            "title": "Set-aside",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only notices with one of these set-aside codes. More than half of the notices in the file carry no set-aside code at all; those match none of these choices.",
            "items": {
              "type": "string",
              "enum": [
                "SBA",
                "SBP",
                "8A",
                "8AN",
                "HZC",
                "HZS",
                "SDVOSBC",
                "SDVOSBS",
                "WOSB",
                "WOSBSS",
                "EDWOSB",
                "EDWOSBSS",
                "VSA",
                "ISBEE",
                "IEE",
                "BICiv",
                "LAS",
                "NONE"
              ],
              "enumTitles": [
                "SBA - Total Small Business Set-Aside",
                "SBP - Partial Small Business Set-Aside",
                "8A - 8(a) Set-Aside",
                "8AN - 8(a) Sole Source",
                "HZC - HUBZone Set-Aside",
                "HZS - HUBZone Sole Source",
                "SDVOSBC - Service-Disabled Veteran-Owned Small Business Set-Aside",
                "SDVOSBS - Service-Disabled Veteran-Owned Small Business Sole Source",
                "WOSB - Women-Owned Small Business Set-Aside",
                "WOSBSS - Women-Owned Small Business Sole Source",
                "EDWOSB - Economically Disadvantaged WOSB Set-Aside",
                "EDWOSBSS - Economically Disadvantaged WOSB Sole Source",
                "VSA - Veteran-Owned Small Business Set-Aside (VA)",
                "ISBEE - Indian Small Business Economic Enterprise",
                "IEE - Indian Economic Enterprise",
                "BICiv - Buy Indian Set-Aside (IHS)",
                "LAS - Local Area Set-Aside",
                "NONE - No set-aside used (written in the notice)"
              ]
            }
          },
          "agencies": {
            "title": "Agency, sub-tier or office",
            "type": "array",
            "description": "Keep only notices where one of these texts appears in the department, sub-tier or office name as the file writes them (for example: VETERANS AFFAIRS, DEPT OF THE ARMY, DEFENSE LOGISTICS AGENCY). Not case-sensitive. SAM.gov writes names in its own form (DEPT OF DEFENSE; VETERANS AFFAIRS, DEPARTMENT OF), so use a distinctive part of the name. One per line.",
            "items": {
              "type": "string"
            }
          },
          "placeOfPerformanceStates": {
            "title": "Place of performance (state)",
            "type": "array",
            "description": "Keep only notices whose place of performance is in one of these states, as two-letter codes (VA, CA, TX). Only about 27% of notices in the file give a place of performance state; the others do not match.",
            "items": {
              "type": "string"
            }
          },
          "postedFrom": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Keep only notices posted on or after this date (YYYY-MM-DD, by the posted date written in the file)."
          },
          "postedTo": {
            "title": "Posted on or before",
            "type": "string",
            "description": "Keep only notices posted on or before this date (YYYY-MM-DD)."
          },
          "deadlineFrom": {
            "title": "Response deadline on or after",
            "type": "string",
            "description": "Keep only notices whose response deadline is on or after this date (YYYY-MM-DD). Use it to leave out notices whose deadline has passed. Notices with no response deadline (about 15%, mostly award notices) do not match."
          },
          "deadlineTo": {
            "title": "Response deadline on or before",
            "type": "string",
            "description": "Keep only notices whose response deadline is on or before this date (YYYY-MM-DD)."
          },
          "maxItems": {
            "title": "Maximum opportunities",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "The most opportunity rows one run returns (newest posted first). One run returns at most 2,000. If more match, a row that is not charged says how many were left out.",
            "default": 200
          },
          "includeDescription": {
            "title": "Include the description text",
            "type": "boolean",
            "description": "Add the description text of each notice (email addresses and phone numbers in it are replaced by a placeholder). Turn off for smaller rows; keyword filters still look at the description.",
            "default": true
          },
          "monitoringMode": {
            "title": "Monitoring mode (only new or updated notices)",
            "type": "boolean",
            "description": "The first run with a set of filters remembers the matching notices and returns none. Every later run with the same filters returns only notices that were not there before, marked new or updated. SAM.gov refreshes the file about once a day; a run that finds the file unchanged stops without reading it. Schedule it once a day.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered for these filters",
            "type": "boolean",
            "description": "Clear the remembered notices for exactly these filters before the run, so the run becomes a first monitoring run again.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}