{
  "openapi": "3.0.1",
  "info": {
    "title": "SAM.gov Scraper: Federal Contract Opportunities Monitor",
    "description": "Returns new SAM.gov federal contract opportunities as clean rows: title, notice type, agency, NAICS/PSC, set-aside, deadline, days left and link. Filter by category, set-aside, agency, state or keyword; only new notices on scheduled runs. No API key.",
    "version": "0.1",
    "x-build-id": "6GFT69qRbebEqjRAW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fedsignals~federal-opportunities-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fedsignals-federal-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/fedsignals~federal-opportunities-monitor/runs": {
      "post": {
        "operationId": "runs-sync-fedsignals-federal-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/fedsignals~federal-opportunities-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-fedsignals-federal-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": {
          "daysBack": {
            "title": "Days back",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Returns notices posted within the last N days. Use 1-3 for a daily schedule, up to 30 for a backfill.",
            "default": 3
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Returns only these SAM.gov notice types. Empty = all types.",
            "items": {
              "type": "string",
              "enum": [
                "Solicitation",
                "Combined Synopsis/Solicitation",
                "Presolicitation",
                "Sources Sought",
                "Special Notice",
                "Award Notice",
                "Justification",
                "Modification/Amendment/Cancel",
                "Sale of Surplus Property"
              ]
            },
            "default": [
              "Solicitation",
              "Combined Synopsis/Solicitation",
              "Presolicitation",
              "Sources Sought"
            ]
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Returns only notices in these plain-English category groups (mapped from PSC, then NAICS). Empty = all categories.",
            "items": {
              "type": "string",
              "enum": [
                "IT & Cyber",
                "Telecom",
                "Construction",
                "Facilities & Maintenance",
                "Security & Guard Services",
                "Medical & Health",
                "Defense & Aerospace",
                "Research & Development",
                "Professional Services",
                "Architecture & Engineering",
                "Education & Training",
                "Logistics & Transportation",
                "Energy & Environment",
                "Food & Lodging",
                "Equipment & Supplies",
                "Other"
              ]
            },
            "default": []
          },
          "naicsPrefixes": {
            "title": "NAICS code prefixes",
            "type": "array",
            "description": "e.g. 5415, 236220. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "pscPrefixes": {
            "title": "PSC code prefixes",
            "type": "array",
            "description": "e.g. D3, Y1, 65. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Agency contains",
            "type": "array",
            "description": "Matches department, sub-tier or office text, e.g. VETERANS AFFAIRS, ARMY. Empty = all agencies.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "setAsides": {
            "title": "Set-asides",
            "type": "array",
            "description": "Returns only notices with these set-asides. Groups: small business, 8(a), hubzone, sdvosb, wosb, veteran-owned, indian, ied; or raw SAM codes such as SBA or SDVOSBC. Empty = any, including no set-aside.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "placeOfPerformanceStates": {
            "title": "Place-of-performance states",
            "type": "array",
            "description": "2-letter codes, e.g. CO, TX. Empty = anywhere.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (any)",
            "type": "array",
            "description": "Match in title or description (case-insensitive).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop notices containing any of these.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "solicitationNumbers": {
            "title": "Solicitation number lookup",
            "type": "array",
            "description": "Returns every notice (all types, including amendments and award notices) whose solicitation or award number matches, ignoring the other filters. Set Days back to cover the solicitation's history, for example 90 (up to 365); each extra month adds roughly 15-30 seconds of download. Dashes and spaces are ignored.",
            "items": {
              "type": "string"
            }
          },
          "samApiKey": {
            "title": "SAM.gov API key (optional, for attachment links)",
            "type": "string",
            "description": "Returns attachment download links (`resourceLinks`) and the awardee's UEI when set. Uses SAM.gov's official Get Opportunities API with your own free key from SAM.gov Account Details (non-federal keys allow about 10 requests a day). Without a key every notice still has `attachmentsPageUrl`, the public page where attachments are listed."
          },
          "samApiMaxRequests": {
            "title": "Max SAM.gov API requests per run",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Returns attachment links for up to 1,000 notices per request (only used with a SAM.gov API key). Keep at 1 on a daily schedule to stay inside SAM.gov's daily key limit.",
            "default": 1
          },
          "activeOnly": {
            "title": "Active notices only",
            "type": "boolean",
            "description": "Skip notices marked inactive.",
            "default": true
          },
          "minDaysToDeadline": {
            "title": "Minimum days to deadline",
            "type": "integer",
            "description": "Skip notices whose response deadline is sooner than this. 0 drops past deadlines.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new since last run (incremental)",
            "type": "boolean",
            "description": "On: returns only notices not delivered by an earlier run with the same filters (memory in a named key-value store). Turn on for scheduled runs; off returns everything that matches.",
            "default": true
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional. Separate incremental memory per saved task. Defaults to a hash of your filters."
          },
          "baselineOnFirstRun": {
            "title": "Baseline on first run (no results, no charge)",
            "type": "boolean",
            "description": "Returns nothing on the first incremental run: marks every notice currently matching your filters as already seen, so the next scheduled run alerts only on genuinely new notices. Free. Needs Only new on.",
            "default": false
          },
          "pushRunSummary": {
            "title": "Add a run-summary row (for webhooks)",
            "type": "boolean",
            "description": "Returns one extra free row at the end with `recordType: \"run-summary\"` (counts, window, run link), so a webhook or Zapier step can read the run result from the dataset. The same summary is always saved as SUMMARY in the key-value store.",
            "default": false
          },
          "includeContacts": {
            "title": "Include contracting officer contact",
            "type": "boolean",
            "description": "Adds the primary point of contact (name, email, phone) published on the notice. Off by default.",
            "default": false
          },
          "descriptionMaxChars": {
            "title": "Description length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate description text; 0 omits it.",
            "default": 1000
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum notices returned (and charged) per run.",
            "default": 1000
          },
          "userAgent": {
            "title": "User-Agent",
            "type": "string",
            "description": "Contact string sent to SAM.gov."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}