{
  "openapi": "3.0.1",
  "info": {
    "title": "US Federal Grants Scraper",
    "description": "Search every US federal grant opportunity on grants.gov. One row per opportunity: number, title, agency, status, who may apply, award ceiling and floor, open and close dates, assistance listing number and link. Keyless, no browser.",
    "version": "0.1",
    "x-build-id": "fNPFZtQB8JDA7KGHI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~us-federal-grants-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-us-federal-grants-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/dami_studio~us-federal-grants-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-us-federal-grants-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/dami_studio~us-federal-grants-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-us-federal-grants-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": {
          "searchTerms": {
            "title": "Search terms",
            "minItems": 0,
            "maxItems": 25,
            "type": "array",
            "description": "Words to search for. Each term is searched on its own and the rows are pooled, so \"wildfire\" and \"drought\" in one run gives you both. The search covers the opportunity title and its full description, so a term can match a grant whose title never mentions it. Up to 25 terms per run. Leave empty to get everything the filters below select.",
            "items": {
              "type": "string"
            }
          },
          "opportunityStatus": {
            "title": "Status",
            "minItems": 0,
            "maxItems": 4,
            "type": "array",
            "description": "Which stage of the lifecycle to return. \"Posted\" is open for applications now. \"Forecasted\" is an agency saying money is coming, usually with estimated dates rather than real ones. \"Closed\" has passed its deadline but is still on the site, and \"archived\" is the long tail going back two decades. Leave empty and you get forecasted plus posted, which is everything you could still apply for.",
            "items": {
              "type": "string",
              "enum": [
                "forecasted",
                "posted",
                "closed",
                "archived"
              ],
              "enumTitles": [
                "Forecasted - announced, not yet open",
                "Posted - open for applications",
                "Closed - deadline passed",
                "Archived - older records"
              ]
            }
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Total opportunities to return across every search term. The budget is split evenly between the terms, so five terms and 50 rows gives you ten of each. Hard ceiling 5,000. Keep it low while you are testing - you pay per row."
          },
          "agencies": {
            "title": "Agency codes",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Limit results to one or more agencies, by code. A top-level code covers everything under it: \"HHS\" catches every Health and Human Services office, while \"HHS-ACF-OHS\" narrows it to the Office of Head Start. Other common ones are ED, DOE, NSF, USDA, DOI, DOT, EPA, HUD, DOL, NASA, SBA, VA, DOS and DHS. Case does not matter.",
            "items": {
              "type": "string"
            }
          },
          "eligibility": {
            "title": "Who may apply",
            "minItems": 0,
            "maxItems": 17,
            "type": "array",
            "description": "Keep only opportunities open to these applicant types. Pick several and a grant open to any one of them is kept. Note that a great many federal grants are coded \"Unrestricted\" or \"Others\" rather than naming your exact category, so a narrow pick here can hide grants you are in fact eligible for.",
            "items": {
              "type": "string",
              "enum": [
                "00",
                "01",
                "02",
                "04",
                "05",
                "06",
                "07",
                "08",
                "11",
                "12",
                "13",
                "20",
                "21",
                "22",
                "23",
                "25",
                "99"
              ],
              "enumTitles": [
                "State governments",
                "County governments",
                "City or township governments",
                "Special district governments",
                "Independent school districts",
                "Public and State controlled institutions of higher education",
                "Native American tribal governments (Federally recognized)",
                "Public housing authorities / Indian housing authorities",
                "Native American tribal organizations (other than Federally recognized)",
                "Nonprofits with 501(c)(3) status, other than higher education",
                "Nonprofits without 501(c)(3) status, other than higher education",
                "Private institutions of higher education",
                "Individuals",
                "For profit organizations other than small businesses",
                "Small businesses",
                "Others (see the eligibility text on the opportunity)",
                "Unrestricted - open to any type of entity"
              ]
            }
          },
          "fundingCategories": {
            "title": "Category of funding activity",
            "minItems": 0,
            "maxItems": 28,
            "type": "array",
            "description": "Keep only opportunities filed under these categories. Agencies pick the category themselves when they post, so it is their label rather than a strict taxonomy - broad searching plus a keyword usually beats a narrow category pick.",
            "items": {
              "type": "string",
              "enum": [
                "ACA",
                "AG",
                "AR",
                "BC",
                "CD",
                "CP",
                "DPR",
                "ED",
                "ELT",
                "EN",
                "EIC",
                "ENV",
                "FN",
                "HL",
                "HO",
                "HU",
                "ISS",
                "IS",
                "IIJ",
                "LJL",
                "NR",
                "OZ",
                "RA",
                "RT",
                "RD",
                "ST",
                "T",
                "O"
              ],
              "enumTitles": [
                "Affordable Care Act",
                "Agriculture",
                "Arts",
                "Business and Commerce",
                "Community Development",
                "Consumer Protection",
                "Disaster Prevention and Relief",
                "Education",
                "Employment, Labor and Training",
                "Energy",
                "Energy Infrastructure and Critical Minerals",
                "Environment",
                "Food and Nutrition",
                "Health",
                "Housing",
                "Humanities",
                "Income Security and Social Services",
                "Information and Statistics",
                "Infrastructure Investment and Jobs Act",
                "Law, Justice and Legal Services",
                "Natural Resources",
                "Opportunity Zone Benefits",
                "Recovery Act",
                "Recreation and Tourism",
                "Regional Development",
                "Science, Technology and Research",
                "Transportation",
                "Other"
              ]
            }
          },
          "fundingInstruments": {
            "title": "Funding instrument",
            "minItems": 0,
            "maxItems": 4,
            "type": "array",
            "description": "The kind of agreement on offer. A grant hands money over with reporting obligations; a cooperative agreement means the agency stays involved in the work.",
            "items": {
              "type": "string",
              "enum": [
                "G",
                "CA",
                "PC",
                "O"
              ],
              "enumTitles": [
                "Grant",
                "Cooperative Agreement",
                "Procurement Contract",
                "Other"
              ]
            }
          },
          "alnNumbers": {
            "title": "Assistance Listing (ALN/CFDA) numbers",
            "minItems": 0,
            "maxItems": 30,
            "type": "array",
            "description": "Exact programme numbers such as 93.600 or 47.076. This is the tightest filter available - it follows a specific federal programme across every opportunity it has ever posted, which is what you want for tracking a grant you have had before.",
            "items": {
              "type": "string"
            }
          },
          "opportunityNumbers": {
            "title": "Exact opportunity numbers",
            "minItems": 0,
            "maxItems": 25,
            "type": "array",
            "description": "Look up specific opportunities by their published number, for example HHS-2026-ACF-OHS-HS-0001. Each one is fetched on its own, so a number that no longer exists returns an uncharged row saying so rather than a wrong match.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted recently",
            "enum": [
              "",
              "3",
              "7",
              "14",
              "21",
              "28",
              "35",
              "42",
              "49",
              "56"
            ],
            "type": "string",
            "description": "Only opportunities posted in the last N days. The service accepts a fixed set of windows, listed here. Useful for a daily or weekly schedule that should only pick up what is new."
          },
          "proxyUrls": {
            "title": "Your own proxy servers (optional)",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Leave this empty. The run brings its own addresses and the cost of them is already inside the price. Fill it in only if you specifically want the traffic to leave through servers you already pay for, as http://user:pass@host:port.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}