{
  "openapi": "3.0.1",
  "info": {
    "title": "Grants.gov Opportunity Monitor — New Funding Alerts, No Login",
    "description": "Watch Grants.gov by keyword, agency, eligibility and category and get only NEW or changed federal funding opportunities: deadline, award ceiling, expected awards, eligible applicants, contact. Daily schedule. No login. MCP-ready. $10 per 1,000 alerts.",
    "version": "1.0",
    "x-build-id": "QsYuJnSgY9mK8zo6W"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/flamboyant_liner~grants-opportunity-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-flamboyant_liner-grants-opportunity-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/flamboyant_liner~grants-opportunity-monitor/runs": {
      "post": {
        "operationId": "runs-sync-flamboyant_liner-grants-opportunity-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/flamboyant_liner~grants-opportunity-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-flamboyant_liner-grants-opportunity-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": "Search terms run one at a time against Grants.gov (title, description, number). Each emitted row carries the keyword that matched it. Leave empty to monitor every opportunity that passes the other filters.",
            "default": [
              "youth",
              "STEM education"
            ],
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Agencies",
            "type": "array",
            "description": "Agency code prefixes to keep, e.g. HHS, NSF, ED, USDOJ, USDA, DOD, or a sub-agency like HHS-ACF or USDOJ-OJP-OJJDP. Matched against the opportunity's agency code. Empty = all agencies.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "eligibilities": {
            "title": "Applicant eligibility codes",
            "type": "array",
            "description": "Grants.gov eligibility codes, e.g. 12 (501(c)(3) nonprofits), 13 (other nonprofits), 00 (state governments), 01 (county), 02 (city), 05 (school districts), 06 (public universities), 20 (private universities), 07 (federally recognized tribes), 23 (small businesses), 99 (unrestricted). Full list in the README. Empty = any.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fundingCategories": {
            "title": "Funding activity categories",
            "type": "array",
            "description": "Category codes, e.g. ED (Education), HL (Health), ST (Science & Technology), CD (Community Development), ISS (Income Security & Social Services), AR (Arts), ENV (Environment), LJL (Law & Justice). Full list in the README. Empty = any.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "Opportunity statuses",
            "type": "array",
            "description": "Which statuses to watch: posted (open for applications), forecasted (announced, not yet open), closed, archived. A forecast that becomes posted is emitted again as an update.",
            "default": [
              "posted",
              "forecasted"
            ],
            "items": {
              "type": "string"
            }
          },
          "postedSinceDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only scan opportunities posted in the last N days. Keep a little longer than your schedule interval (daily schedule → 7 days) so nothing slips through.",
            "default": 7
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "Fetch the full synopsis for every emitted row: award ceiling/floor, estimated funding, number of awards, eligible applicant types, cost sharing, description and contact email. One extra request per row.",
            "default": true
          },
          "maxNewPerKeyword": {
            "title": "Max alerts per keyword",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cap on new/updated opportunities emitted per keyword per run. Newest posted first.",
            "default": 5
          },
          "maxItems": {
            "title": "Max alerts per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Overall cap on rows emitted per run across all keywords.",
            "default": 10
          },
          "firstRunMode": {
            "title": "First run mode",
            "enum": [
              "emitAll",
              "baseline"
            ],
            "type": "string",
            "description": "emitAll: the first run emits everything currently matching (up to the caps). baseline: the first run only records what exists so later runs emit only what is genuinely new.",
            "default": "emitAll"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. After each run a single JSON POST is sent here with the run summary and up to 50 emitted opportunities (Slack/Zapier/Make/your API).",
            "default": ""
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this watch list. Each monitorId keeps its own memory of seen opportunities, so you can run several independent monitors on one account.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}