{
  "openapi": "3.0.1",
  "info": {
    "title": "Grants.gov Scraper — Open Federal Funding Opportunities",
    "description": "Open US federal funding opportunities from Grants.gov: agency, posted and closing dates, award ceiling and floor, eligible applicants, assistance listing, synopsis. Filter by keyword, agency, category, size; flag new since your last run. Official API, no login.",
    "version": "0.1",
    "x-build-id": "XZkUHLnKFIFAHbqc7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~grants-gov-opportunities-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-grants-gov-opportunities-scraper",
        "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/northbell~grants-gov-opportunities-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-grants-gov-opportunities-scraper",
        "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/northbell~grants-gov-opportunities-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-grants-gov-opportunities-scraper",
        "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 (optional)",
            "type": "array",
            "description": "Words to find in the opportunity text. One per line; an opportunity that matches any line is returned. Words on one line must all appear. Keep them short, e.g. \"cybersecurity\" or \"wildfire\". Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Agencies (optional)",
            "type": "array",
            "description": "Agencies that offer the funding, one per line: the name or code as Grants.gov lists it, e.g. \"Department of Energy\", \"DOE\", \"National Science Foundation\" or a sub-agency code such as \"HHS-NIH11\". A top-level agency includes all its sub-agencies. An unknown name stops the run before anything is charged. Leave empty for all agencies.",
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "Opportunity status",
            "type": "array",
            "description": "Which opportunities to include, one per line: \"posted\" (open for applications now), \"forecasted\" (announced in advance, not yet open), \"closed\" (deadline passed) and \"archived\" (older, kept for reference).",
            "default": [
              "posted"
            ],
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days, optional)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only opportunities first posted in the last N days. Leave empty for all of them, newest first. Run it daily with 3 or 7 and \"Only new\" below for a cheap feed of fresh opportunities."
          },
          "closesWithinDays": {
            "title": "Closing within (days, optional)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only opportunities whose application deadline falls in the next N days. Opportunities with no stated deadline (all forecasts) are left out. Leave empty to skip."
          },
          "eligibilities": {
            "title": "Who can apply (codes, optional)",
            "type": "array",
            "description": "Only opportunities open to these kinds of applicants, one two-digit code per line: 23 small businesses, 22 for-profit organizations other than small businesses, 12 nonprofits with 501(c)(3) status, 13 other nonprofits, 06 public universities, 20 private universities, 00 state governments, 01 county governments, 02 city governments, 07 federally recognized tribes, 21 individuals, 25 others, 99 unrestricted. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "fundingCategories": {
            "title": "Funding categories (codes, optional)",
            "type": "array",
            "description": "Only opportunities in these categories, one code per line: HL health, ED education, ST science and technology, ENV environment, EN energy, AG agriculture, T transportation, AR arts, HU humanities, FN food and nutrition, ISS income security and social services, LJL law and justice, CD community development, DPR disaster relief, NR natural resources, O other. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "fundingInstruments": {
            "title": "Funding instruments (optional)",
            "type": "array",
            "description": "Only these kinds of funding, one code per line: G grant, CA cooperative agreement, PC procurement contract, O other. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "assistanceListings": {
            "title": "Assistance Listing numbers (optional)",
            "type": "array",
            "description": "Only opportunities under these federal programs, one per line, in the form 93.307 (the old CFDA numbers). Each line is a separate search and the results are merged. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "minAward": {
            "title": "Minimum award size (USD, optional)",
            "minimum": 0,
            "type": "number",
            "description": "Only opportunities whose largest award (the award ceiling) is at least this many US dollars. Opportunities that state no ceiling are left out when you set this or the maximum. Needs the details, which the Actor then reads whatever the setting below says."
          },
          "maxAward": {
            "title": "Maximum award size (USD, optional)",
            "minimum": 0,
            "type": "number",
            "description": "Only opportunities whose smallest award (the award floor, 0 if none is stated) is at most this many US dollars. Opportunities that state no ceiling are left out when you set this or the minimum."
          },
          "includeDetails": {
            "title": "Read the full details of each opportunity",
            "type": "boolean",
            "description": "On: one extra request per opportunity adds the synopsis, award ceiling and floor, total funding, number of awards, eligible applicants and funding category. Off: only title, agency, dates and listing numbers. Reading 100 opportunities took 87 seconds with details on and 2.5 seconds with them off.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum opportunities",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many opportunities to return, newest first. You pay per opportunity returned. With \"Only new\" the Actor reads past the opportunities you have already seen until it has found this many new ones. Narrow the search with the filters above rather than raising this.",
            "default": 100
          },
          "output": {
            "title": "What to return",
            "enum": [
              "all",
              "new"
            ],
            "type": "string",
            "description": "With \"Only new\", opportunities you already got in an earlier run of the same search are skipped and not charged. The first run returns everything, because there is nothing to compare with yet.",
            "default": "all"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}