{
  "openapi": "3.0.1",
  "info": {
    "title": "E-Rate Form 470 RFP Scraper (USAC School & Library Bids)",
    "description": "E-Rate Form 470 search and RFP feed from USAC open data: one record per posting with the school, district or library, every service request, allowable contract date, contacts, consultant and links to attached RFP documents. Filter by funding year, state, category or service type. $0.004/record.",
    "version": "1.1",
    "x-build-id": "K9FuVJuNPW9cDXKIU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jserle~erate-form-470-rfp-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jserle-erate-form-470-rfp-feed",
        "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/jserle~erate-form-470-rfp-feed/runs": {
      "post": {
        "operationId": "runs-sync-jserle-erate-form-470-rfp-feed",
        "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/jserle~erate-form-470-rfp-feed/run-sync": {
      "post": {
        "operationId": "run-sync-jserle-erate-form-470-rfp-feed",
        "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": {
          "fundingYear": {
            "title": "Funding year",
            "type": "string",
            "description": "An E-Rate funding year such as 2027, or `current`, or `all`. E-Rate funding year N runs 1 July N-1 to 30 June N, so `current` is 2027 for any date from 1 July 2026 onward. A funding year opens with almost no postings, so `current` automatically widens to include the previous funding year when the current one does not yet hold enough postings to fill your maxResults.",
            "default": "current"
          },
          "state": {
            "title": "Billed entity states",
            "uniqueItems": true,
            "type": "array",
            "description": "Two-letter USPS codes of the applicant's billed entity, matched exactly. Example: [\"NY\", \"NJ\", \"CT\"]. Leave empty for every state and territory.",
            "items": {
              "type": "string"
            }
          },
          "serviceCategory": {
            "title": "Service category",
            "enum": [
              "any",
              "Category 1",
              "Category 2"
            ],
            "type": "string",
            "description": "Category 1 is connectivity to the building (internet access, data transmission, leased lit and dark fiber). Category 2 is connectivity inside the building (switches, access points, cabling, firewalls, basic maintenance, managed broadband).",
            "default": "any"
          },
          "serviceType": {
            "title": "Service type",
            "type": "string",
            "description": "Case-insensitive substring on the requested service type. The source uses exactly five: Data Transmission and/or Internet Access, Internet Access and/or Telecommunications, Internal Connections, Basic Maintenance of Internal Connections, Managed Internal Broadband Services. `internet` matches the first two."
          },
          "keyword": {
            "title": "Entity name keyword",
            "type": "string",
            "description": "Case-insensitive substring on the billed entity name, which is the school district, school, library, library system or consortium doing the buying. Example: unified, or Public Library."
          },
          "postedFrom": {
            "title": "Posted on or after",
            "type": "string",
            "description": "ISO date, for example 2026-07-01. Keeps postings certified on or after this date. The Form 470 certification date is the date the posting went live and starts the 28-day competitive bidding clock."
          },
          "postedTo": {
            "title": "Posted on or before",
            "type": "string",
            "description": "ISO date, for example 2026-08-31. Keeps postings certified on or before the end of this day."
          },
          "rfpOnly": {
            "title": "Only postings with an RFP document",
            "type": "boolean",
            "description": "Keep only Form 470s that have at least one Request for Proposal document attached. These are the postings with a real written spec, bid form or contract draft you can download, rather than a bare service request.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum postings",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "How many postings to deliver, newest first. You are charged per delivered posting, so this is also your cost cap.",
            "default": 100
          },
          "includeRaw": {
            "title": "Include the raw source rows",
            "type": "boolean",
            "description": "Attach a `raw` array holding every source row that makes up the posting, exactly as USAC's API returned it. The source publishes one row per service request per attached RFP document, so this is verbose. Useful for auditing the normalization.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}