eCFR Historical Citation Review
Pricing
from $250.00 / 1,000 completed changed citation packets
eCFR Historical Citation Review
Historical source-change packets for existing document-to-CFR citation tables, with exact text hunks and source coverage for human review.
Pricing
from $250.00 / 1,000 completed changed citation packets
Rating
0.0
(0)
Developer
Kagerou AP
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Prepare a historical source-change packet for your existing document-to-CFR reference table. Supply document IDs, exact CFR title/section citations, and two review dates. The Actor joins the official eCFR text comparison back to each document ID, with headings, text hunks, source URLs, editorial record dates, title currency and unresolved references.
For device QA consultants reviewing controlled-document references. The Actor reports source facts for human review; it does not decide whether an SOP must change or whether a device, document or organization complies with law.
Try the historical example
{"references": [{ "documentId": "SOP-DEMO-001", "cfrTitle": 21, "section": "820.1" }],"beforeDate": "2025-01-01","afterDate": "2026-03-01","maxReferences": 20}
This original demonstration document ID maps to real official government source text. It deliberately uses historical dates. The default, prefill, API example and sample input are identical. The real sample output reports a change to 21 CFR 820.1 and contains the returned text rather than fabricated regulatory text. It is a demonstration of source comparison, not an actual customer's SOP or measured time saving.
Output
The default Dataset contains one citation_review_packet. Key-value store record OUTPUT.packet contains the same useful facts; the OUTPUT envelope also contains publication and custom-event billing status.
Each reference retains the supplied documentId, cfrTitle and section. Status is changed, unchanged, source-record-removal or unavailable. before and after retain requested dates, normalized heading/text, exact source URLs, source hashes and matching editorial source records when available. textHunks contains added, removed and context text. sourceCurrency.up_to_date_as_of is the official title's current coverage date. The source log date 2026-02-04 in the example is an editorial source-record date; it must not be treated as a legal effective date.
source-record-removal means the exact record is missing and the matching official version record says removed: true. It does not mean a legal obligation ended. An unexplained 404, invalid XML, wrong citation, stale currency, incomplete version log, network failure or request cap becomes unavailable. An unresolved reference makes the packet partial_unresolved; source changes already retrieved remain visible with no custom-event fee. Unchanged is reported only when complete comparable source facts establish it, including identical officially removed-record states.
Price and budget
Proposed Pay-per-event price: $0.25 per completed changed citation packet, plus $0.00005 automatic Actor start. There is no Dataset item fee. The custom event is exactly completed_changed_citation_packet, one per full packet, regardless of the number of changed document references.
All requested valid references must be resolved and at least one source change must be present. Unchanged, unavailable, partial unresolved and error results have zero custom-event fee. An invalid or missing input is rejected before source retrieval or custom charging. Platform startup and infrastructure charges are separate.
Funded whole-event capacity is determined before saving useful results. A budget below $0.25005 (when one startup event is due) cannot fund a changed packet; it produces only a budget diagnostic with no source text. Useful output is persisted before the custom event. OUTPUT tracks settled charges. If a publication or charge response is uncertain, resurrection does not replay it. The checkpoint is left for inspection; do not delete it and retry an uncertain charge in the same run. Local SDK execution is a free local test and does not demonstrate native customer billing or owner-waiver behavior.
Resuming a completed packet checks that the default Dataset still contains the same packet. Missing, unreadable or different Dataset content rejects the resume without another source request, packet write or custom event. If OUTPUT is missing while Dataset content or a prior custom-event count survives, the run stops without reconstructing the report or repeating the work. Unsupported root input fields are rejected before source retrieval.
Limits and sources
Up to 20 input references, 45 serial official API requests, 400,000 response bytes each, 8 MB total and a 180-second source-fetch window; per-request timeout is 12 seconds. Text comparisons have a 1-second/1,000-edit bound; a comparison exceeding that bound is unresolved. One large version log or many distinct parts may produce an unresolved packet within these bounds. Duplicate citations with different document IDs reuse source fetches while keeping each document ID. Identical document/citation rows are rejected.
Dates must be real YYYY-MM-DD calendar dates from 2017-01-01, in chronological order, no later than today and no later than each official title's currency. Dates are never silently clamped. Accepted citations are exact sections such as 820.1 or 11.1a, not whole parts, ranges, appendices or inferred crosswalks. Section prefixes identify the part for official version lookup; an unavailable or inconsistent part log leaves the reference unknown. No title-wide or legal-completeness claim is made.
Only these official endpoints are requested:
The eCFR is an informational compilation, not an official legal edition; see What is the eCFR? and point-in-time guidance. Government regulatory text is the public-domain source baseline. Private incorporated standards such as ISO 13485 and ISO 9000 are not fetched, followed, reconstructed or licensed by this Actor. Their identifiers may occur in official section text. No browser, login, proxy, notification, external paid API, retained monitoring baseline or private document upload is required. HTTP 403/429 stops source requests without bypass or retry.
Local development and licensing
Node 24.18.0; npm ci --ignore-scripts, npm test, npm run validate, npm run live. Tests launch a child process with CRAWLEE_STORAGE_DIR already set to a new SKU-only directory, assert the actual SDK storage base and never purge/drop shared storage. Live testing reads the four official sample endpoints and writes evidence locally. Native Actor creation/build/run/publishing requires a separate release authorization and has not been performed for this local implementation.
Pinned libraries: Apify SDK 3.7.2 (Apache-2.0), fast-xml-parser 5.11.2 (MIT), jsdiff 9.0.0 (BSD-3-Clause). Preserve the notices in THIRD_PARTY_NOTICES.txt and dependency licenses. XML declarations defining entities/DOCTYPE are rejected. Shipping source and the dependency lock are frozen by the implementation manifest.