{
  "openapi": "3.0.1",
  "info": {
    "title": "Federal Register Scraper — New Rules & Comment Deadlines",
    "description": "US Federal Register documents from the official API: rules, proposed rules, notices and presidential documents with agency, dates, comment deadline, docket, RIN and CFR references. Filter by keyword, agency or CFR part and flag what is new since your last run.",
    "version": "0.1",
    "x-build-id": "AyqXtM6i9ylj37ip8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northbell~federal-register-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northbell-federal-register-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~federal-register-scraper/runs": {
      "post": {
        "operationId": "runs-sync-northbell-federal-register-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~federal-register-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-northbell-federal-register-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 or phrases to find in the full text of the document. One per line; a document that matches any line is returned. Several words on one line must all appear, and a phrase in quotes is matched as written, e.g. \"data breach\". Each line is a separate search, so use up to 10 lines. Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "agencies": {
            "title": "Agencies (optional)",
            "type": "array",
            "description": "Only documents from these agencies. One per line, as the agency's name, its abbreviation or its slug on federalregister.gov, e.g. Environmental Protection Agency, EPA or environmental-protection-agency. A document matches if it comes from any of them. Leave empty for every agency.",
            "items": {
              "type": "string"
            }
          },
          "documentTypes": {
            "title": "Document types (optional)",
            "type": "array",
            "description": "Only these kinds of documents. Leave empty for all four.",
            "items": {
              "type": "string",
              "enum": [
                "rule",
                "proposed-rule",
                "notice",
                "presidential-document"
              ],
              "enumTitles": [
                "Rule (final rules)",
                "Proposed rule",
                "Notice",
                "Presidential document (proclamations, executive orders, memoranda)"
              ]
            }
          },
          "significantOnly": {
            "title": "Significant rules only",
            "type": "boolean",
            "description": "Only documents whose rulemaking the Federal Register marks as significant under Executive Order 12866. The flag comes from the regulation's entry in the Unified Agenda, so most notices have none and are left out when this is on.",
            "default": false
          },
          "cfrTitle": {
            "title": "CFR title (optional)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Only documents that affect this title of the Code of Federal Regulations, e.g. 40 for environmental protection or 21 for food and drugs. Combine with the CFR part below to narrow it down."
          },
          "cfrPart": {
            "title": "CFR part (optional)",
            "type": "string",
            "description": "A part of the CFR title above, e.g. 60, or a range such as 50-99. Needs the CFR title to be set."
          },
          "topics": {
            "title": "Topics (optional)",
            "type": "array",
            "description": "Topic slugs (the CFR indexing terms listed at federalregister.gov/topics), one per line, e.g. air-pollution-control or water-pollution-control. A document matches if it has any of them. A slug the Federal Register does not know ends the run with an error row that says so.",
            "items": {
              "type": "string"
            }
          },
          "commentPeriodOpen": {
            "title": "Comment period still open",
            "type": "boolean",
            "description": "Only documents that invite comments and whose comment period has not closed yet (comment deadline today or later, by US Eastern date). When this is on and you set neither \"Published since\" nor \"Published within\", the Actor looks back 730 days, which covers open comment periods.",
            "default": false
          },
          "publishedSince": {
            "title": "Published since (optional)",
            "type": "string",
            "description": "Only documents published on or after this date, written YYYY-MM-DD, e.g. 2026-10-01. Takes the place of \"Published within\". The Federal Register API starts in 1994."
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Only documents published in the last N days, counting back from today. Leave empty for 7 days (730 days when \"Comment period still open\" is on). Ignored when \"Published since\" is set. Run it daily with 7 and \"Only new\" for a feed of fresh documents."
          },
          "maxResults": {
            "title": "Maximum documents",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many documents to return, newest first. You pay per document returned. With \"Only new\" the Actor reads past the documents you have already seen until it has found this many new ones. Narrow the search with the filters above rather than raising this.",
            "default": 200
          },
          "output": {
            "title": "What to return",
            "enum": [
              "all",
              "new"
            ],
            "type": "string",
            "description": "With \"Only new\", documents 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}