{
  "openapi": "3.0.1",
  "info": {
    "title": "Federal Register Documents: Rules, Notices & Comment Dates",
    "description": "Rules, proposed rules, notices and presidential documents from the official Federal Register API: filter by keyword, agency, CFR title, topic, docket, publication window, effective date or open comment window. Rows carry citation, dates, docket ids, abstract and text links.",
    "version": "0.1",
    "x-build-id": "MajEmd8BXBRt315Ur"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~federal-register-documents/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-federal-register-documents",
        "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/yadroo~federal-register-documents/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-federal-register-documents",
        "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/yadroo~federal-register-documents/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-federal-register-documents",
        "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": {
          "mode": {
            "title": "What to return",
            "enum": [
              "documents",
              "publicInspection",
              "agencies"
            ],
            "type": "string",
            "description": "`documents` searches the Federal Register itself: every rule, proposed rule, notice and presidential document back to 1994 (scanned issues to 1936), including the ones already scheduled for the next issues. `publicInspection` reads the filing desk instead — papers signed and filed by an agency that will be printed in the coming days; it is the earliest a document can be seen. `agencies` writes one row per agency with the slug you need for *Agencies* below. Filters in the sections below apply to `documents`; `publicInspection` accepts document types and a filing date, `agencies` accepts a name search.",
            "default": "documents"
          },
          "searchTerm": {
            "title": "Search words",
            "type": "string",
            "description": "Full-text search over the whole document, not only the title. Quote a phrase (`\"comment period\"`) to keep the words together; several words without quotes are matched as a phrase-less query. In mode `agencies` this is a plain name filter (`commission`, `bureau`, `energy`). Empty = every document the other filters allow, newest first."
          },
          "documentTypes": {
            "title": "Document types",
            "type": "array",
            "description": "Keep only these kinds of document. Empty = all four. The output field `type` carries the readable form (`Rule`, `Proposed Rule`, `Notice`, `Presidential Document`), `subtype` the finer label the source prints (for example `Executive Order`).",
            "items": {
              "type": "string",
              "enum": [
                "RULE",
                "PRORULE",
                "NOTICE",
                "PRESDOCU"
              ],
              "enumTitles": [
                "Rule — final rule, already in the CFR pipeline",
                "Proposed rule — open for comment, incl. ANPRM",
                "Notice — meetings, information collections, grants, determinations",
                "Presidential document — executive orders, proclamations, memoranda"
              ]
            }
          },
          "agencySlugs": {
            "title": "Agencies",
            "type": "array",
            "description": "Agency slugs, e.g. `environmental-protection-agency`, `securities-and-exchange-commission`, `food-and-drug-administration`, `energy-department`. Several slugs are combined with OR. A department slug also brings in its sub-agencies. Run mode `agencies` once for the full dictionary — the source answers an unknown slug with an error, so this actor checks your slugs first: short names (`EPA`), printed names and obvious typos are resolved and named in the status message, anything else stops the run with the closest matches named.",
            "items": {
              "type": "string"
            }
          },
          "presidentialDocumentTypes": {
            "title": "Kind of presidential document",
            "type": "array",
            "description": "Narrows presidential documents further. Use it with document type *Presidential document*; on its own it also works, because only presidential documents carry these labels. Executive orders come with `executiveOrderNumber` and `signingDate` filled.",
            "items": {
              "type": "string",
              "enum": [
                "executive_order",
                "proclamation",
                "memorandum",
                "determination"
              ],
              "enumTitles": [
                "Executive order",
                "Proclamation",
                "Memorandum",
                "Determination"
              ]
            }
          },
          "sections": {
            "title": "Subject areas",
            "type": "array",
            "description": "The six subject areas the source itself sorts documents into. Broader than *Topics* and useful when you do not know which agency publishes what you look for.",
            "items": {
              "type": "string",
              "enum": [
                "money",
                "environment",
                "world",
                "science-and-technology",
                "business-and-industry",
                "health-and-public-welfare"
              ],
              "enumTitles": [
                "Money — banking, securities, taxes, procurement",
                "Environment — air, water, waste, wildlife, fisheries",
                "World — trade, immigration, export control, foreign affairs",
                "Science and technology — telecom, patents, aviation safety, research",
                "Business and industry — transport, energy markets, agriculture, consumer goods",
                "Health and public welfare — health care, food safety, housing, civil rights"
              ]
            }
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Index terms as slugs: `air-pollution-control`, `imports`, `reporting-and-recordkeeping-requirements`, `endangered-and-threatened-species`. A slug is the printed topic lower-cased with hyphens instead of spaces — the `topics` field of any row shows the printed form. Several topics are combined with OR.",
            "items": {
              "type": "string"
            }
          },
          "docketId": {
            "title": "Agency docket",
            "type": "string",
            "description": "One agency docket number, e.g. `EPA-HQ-OAR-2021-0317` or `CMS-4217-NC`, to follow a single rulemaking through its proposed rule, extensions and final rule. Exact match on the docket the agency prints."
          },
          "cfrTitle": {
            "title": "CFR title",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Keep documents that change this title of the Code of Federal Regulations (40 = environment, 21 = food and drugs, 17 = securities, 12 = banks, 14 = aeronautics). The way to watch the part of the code your compliance work touches."
          },
          "cfrPart": {
            "title": "CFR part",
            "type": "string",
            "description": "A part inside the CFR title above, e.g. `52` with title 40, or `1308` with title 21. Needs *CFR title* to be set. Output field `cfrCitations` lists the citations of a document (`40 CFR 52`), `cfrTitles` the title numbers alone."
          },
          "significantOnly": {
            "title": "Only economically significant documents",
            "type": "boolean",
            "description": "Keep documents the unified agenda marks as significant under Executive Order 12866 — the rules with a large economic or policy effect. The flag is set on a minority of documents, so combine it with a wide date window.",
            "default": false
          },
          "publishedFrom": {
            "title": "Published from",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, earliest publication date. Empty = no lower bound."
          },
          "publishedTo": {
            "title": "Published to",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, latest publication date. Documents already scheduled for the coming issues carry a future publication date, so leave this empty to see them."
          },
          "lookbackDays": {
            "title": "Published in the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Relative window for scheduled runs: 1 = today's issue, 7 = the last week. Documents scheduled for the coming issues are always included. Ignored when *Published from* is set."
          },
          "effectiveWithinDays": {
            "title": "Takes effect within N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep documents whose effective date falls between today and N days from now — the deadline a company has to comply with. Only final rules and some notices carry an effective date; rows come with `daysUntilEffective`."
          },
          "commentsOpenOnly": {
            "title": "Only documents still open for comment",
            "type": "boolean",
            "description": "Keep documents whose comment period closes today or later, so nothing on the list is already past. Pair it with document type *Proposed rule*; rows come with `commentsCloseOn`, `daysUntilCommentsClose` and the comment link where the source has one.",
            "default": false
          },
          "availableOn": {
            "title": "Public inspection day",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, the filing desk of one day, for mode `publicInspection` only. Empty = the newest day that has filings: agencies file on business days, so a Sunday run returns Friday's desk and the row field `inspectionIssueDate` says which day it is."
          },
          "onlyNew": {
            "title": "Only documents not seen before",
            "type": "boolean",
            "description": "Remember every document number written (the slug in mode `agencies`) in a named key-value store of your account, one memory per filter combination, and write only the ones no earlier run delivered. The first run writes what it finds, later runs write what appeared since — the cheap way to run a watch list on a schedule without paying twice for the same document. A document is remembered only once it was written, so a run stopped by your spending limit leaves the rest for the next run.",
            "default": false
          },
          "includeFullText": {
            "title": "Include the full document text",
            "type": "boolean",
            "description": "Add `fullText` (the plain-text version the source publishes) and `fullTextChars` to every row. This is one extra request per row, so a run with the text keeps at most 120 rows (a larger *Max rows* is lowered and the status says so). A row whose text the source does not publish, or whose text request fails, is still written with `fullTextError` saying why. The abstract, action line and date paragraph are in every row anyway, for free.",
            "default": false
          },
          "fullTextMaxChars": {
            "title": "Cut the full text at N characters",
            "minimum": 500,
            "maximum": 200000,
            "type": "integer",
            "description": "Long rules run past a million characters. The text is cut at this length (`fullTextTruncated` says whether it was) to keep dataset rows and LLM prompts manageable.",
            "default": 20000
          },
          "sortBy": {
            "title": "Sort rows by",
            "enum": [
              "newest",
              "oldest",
              "relevance",
              "executiveOrderNumber"
            ],
            "type": "string",
            "description": "`relevance` needs *Search words* — without them the run falls back to `newest` and says so in the status message. `executiveOrderNumber` only orders presidential documents. Mode `agencies` is always sorted by name.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many rows (at most 120 with *Include the full document text*). A busy weekday brings 100-400 documents, a year of one agency's rules a few hundred. The source serves at most 10 000 documents per query — narrow the dates or the agency to go deeper.",
            "default": 50
          },
          "fields": {
            "title": "Output fields",
            "type": "array",
            "description": "Keep only these fields, in this order, e.g. [\"documentNumber\", \"title\", \"commentsCloseOn\", \"url\"]. `rowType` (and `found` on the found:false row of an unknown docket) always stays. A wrong letter case or an obvious typo is corrected and a name the mode does not have is ignored, both with a warning in the status message; a list with no valid name stops the run before anything is billed. Empty = every field the mode produces.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}