{
  "openapi": "3.0.1",
  "info": {
    "title": "SAM.gov Contract Opportunities Feed: Official Data",
    "description": "New federal contract opportunities from SAM.gov's official public data file, with no scraping, API key or login. Filter by keyword, NAICS, PSC, set-aside, agency, state and deadline. Monitor mode returns only new notices and doesn't bill repeats. About 1 day behind sam.gov. $2 per 1,000.",
    "version": "0.1",
    "x-build-id": "wYYpkkS92rymeAV5h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/moo_iscool~sam-gov-opportunities/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-moo_iscool-sam-gov-opportunities",
        "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/moo_iscool~sam-gov-opportunities/runs": {
      "post": {
        "operationId": "runs-sync-moo_iscool-sam-gov-opportunities",
        "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/moo_iscool~sam-gov-opportunities/run-sync": {
      "post": {
        "operationId": "run-sync-moo_iscool-sam-gov-opportunities",
        "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": "Match notices whose title contains any of these phrases. Matching is case-insensitive. Each entry is one phrase, so \"cloud computing\" stays together. Description text is included when Search in description is on.",
            "items": {
              "type": "string"
            }
          },
          "searchInDescription": {
            "title": "Search in description",
            "type": "boolean",
            "description": "Also match keywords in the notice description. Turn this off to match the title only.",
            "default": true
          },
          "naicsCodes": {
            "title": "NAICS codes",
            "type": "array",
            "description": "Prefix match on the NAICS code. 5415 matches 541511, 541512, and any other code that starts with 5415. Leave empty to allow every NAICS code.",
            "items": {
              "type": "string"
            }
          },
          "pscCodes": {
            "title": "PSC codes",
            "type": "array",
            "description": "Prefix match on the classification code, also called the PSC or FSC code. R4 matches R425.",
            "items": {
              "type": "string"
            }
          },
          "setAsideCodes": {
            "title": "Set-aside",
            "type": "array",
            "description": "Keep notices with these set-asides. Each entry can be a code or a label, matched without case sensitivity. Codes: SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBC, SDVOSBS, WOSB, WOSBSS, EDWOSB, EDWOSBSS, VSA, VSS, ISBEE, IEE, LAS, BICiv, ESB, NONE. Labels such as Small Business, 8(a), HUBZone, SDVOSB, and Women-Owned are accepted. Leave empty to allow every set-aside, including notices with none.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "smallBusinessOnly": {
            "title": "Small business only",
            "type": "boolean",
            "description": "Keep only notices that use a set-aside other than blank or NONE. You can combine this with specific set-aside codes.",
            "default": false
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Keep notices of these types. Leave empty to allow every type.",
            "items": {
              "type": "string",
              "enum": [
                "Combined Synopsis/Solicitation",
                "Solicitation",
                "Award Notice",
                "Presolicitation",
                "Special Notice",
                "Sources Sought",
                "Justification",
                "Modification/Amendment/Cancel",
                "Justification and Approval (J&A)",
                "Sale of Surplus Property",
                "Consolidate/(Substantially) Bundle"
              ],
              "enumTitles": [
                "Combined Synopsis/Solicitation",
                "Solicitation",
                "Award Notice",
                "Presolicitation",
                "Special Notice",
                "Sources Sought",
                "Justification",
                "Modification/Amendment/Cancel",
                "Justification and Approval (J&A)",
                "Sale of Surplus Property",
                "Consolidate/(Substantially) Bundle"
              ]
            },
            "default": []
          },
          "agencies": {
            "title": "Agencies",
            "type": "array",
            "description": "Case-insensitive substring match against the department, sub-tier, and contracting office. A notice matches if any entry is found in any of those three fields. Example: defense, veterans affairs.",
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "Place of performance states",
            "type": "array",
            "description": "Two-letter place-of-performance state codes, such as VA or TX. Matching is case-insensitive and uses the PopState column.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep notices posted in the last this many days. 7 is one week. 30 is about a month. Set 0 to turn this field off. If Posted since is filled in, that field is used instead. Set this to 0 and leave Posted since empty to read the whole active file.",
            "default": 7
          },
          "postedSince": {
            "title": "Posted since",
            "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]+ [A-Za-z]+$",
            "type": "string",
            "description": "Advanced posted-date filter. Use a date like 2026-10-01, or a window like 7 days, 24 hours, or 2 weeks. When this field is filled in, it replaces Posted within days. Leave it empty to use Posted within days. Posted timestamps in the file are treated as US Eastern. Clear both date fields to read the whole active file.",
            "default": ""
          },
          "deadlineAfter": {
            "title": "Deadline after",
            "pattern": "^$|^[Tt]oday$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]+ [A-Za-z]+$",
            "type": "string",
            "description": "Keep notices whose response deadline is after this point. Use today, a date like 2026-11-01, or a window like 0 days. today means after the start of today, US Eastern. Notices with no deadline are kept unless Require response deadline is on. Leave empty to skip this filter.",
            "default": ""
          },
          "responseDeadlineAfter": {
            "title": "Response deadline after",
            "pattern": "^$|^[Tt]oday$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^[0-9]+ [A-Za-z]+$",
            "type": "string",
            "description": "Same filter as Deadline after. Used only when Deadline after is empty. 0 days means still open as of now.",
            "default": ""
          },
          "skipExpiredNotices": {
            "title": "Skip notices whose deadline has passed",
            "type": "boolean",
            "description": "Skip notices whose parsed response deadline is earlier than the run start time. Notices with no deadline follow Require response deadline.",
            "default": true
          },
          "requireResponseDeadline": {
            "title": "Require response deadline",
            "type": "boolean",
            "description": "Drop notices that have no response deadline. By default those notices are kept.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Return only notice IDs this saved search has not returned before. Notices already returned are not saved again and are not charged. Use a different monitor name for each saved search.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name for the only-new memory of this saved search. Each saved search needs its own name. IDs are stored in the named key-value store sam-gov-opportunities-state, under SEEN_ plus this name. Named key-value stores stay until you delete them, on every Apify plan, including the free plan. Letters, numbers, and ! - _ . ' ( ) are kept. Other characters become underscores. If this is empty, State key is used.",
            "default": ""
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Another name for the only-new memory. Monitor name is used when both are filled in. The default name is default.",
            "default": ""
          },
          "includeContacts": {
            "title": "Include contacts",
            "type": "boolean",
            "description": "Include primary and secondary contact name, title, email, phone, and fax when the file has them. Turn this off to leave contact fields out of the dataset.",
            "default": true
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the notice description to each result. Many descriptions are blank, and those rows get description null. Descriptions can be long, so this is off by default.",
            "default": false
          },
          "descriptionMaxLength": {
            "title": "Description max length",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum description length in characters when descriptions are included. Use 0 for the full text. A blank description is null.",
            "default": 2000
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many notices have been saved. The download also stops once it is past your posted-date window.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}