gov-data-mcp 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +22 -10
  2. package/package.json +1 -1
  3. package/src/catalog.json +406 -41
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # gov-data-mcp
2
2
 
3
- **116 US government open-data tools, as one MCP server.**
3
+ **120 US government open-data tools, as one MCP server.**
4
4
 
5
5
  EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, NRCS, HRSA, CMS, county assessor rolls and state licensing boards — all reachable as agent-callable tools, all reading directly from official government APIs and bulk files. No scraping, no HTML parsing, no rate-limit roulette.
6
6
 
@@ -49,13 +49,13 @@ Claude Desktop reads `claude_desktop_config.json`; Claude Code reads `.mcp.json`
49
49
  | `parcel-owner-lookup` | Assessor-roll owner of record for an address |
50
50
  | `license-verifier` | 19 professional licensing boards across 9 states + OIG exclusions |
51
51
 
52
- **Plus three tools that reach the other 104:**
52
+ **Plus three tools that reach the other 108:**
53
53
 
54
54
  - `search-gov-data-tools` — find a tool by keyword, agency or topic
55
55
  - `describe-gov-data-tool` — full input schema for any tool in the catalog
56
56
  - `run-gov-data-tool` — run any tool in the catalog
57
57
 
58
- The catalog is bundled, so discovery costs nothing. Ask your agent *"what government data tools do you have for flood risk?"* and it will search all 116.
58
+ The catalog is bundled, so discovery costs nothing. Ask your agent *"what government data tools do you have for flood risk?"* and it will search all 120.
59
59
 
60
60
  ## Example prompts
61
61
 
@@ -75,6 +75,18 @@ Each tool is a published [Apify Actor](https://apify.com/malonestar) that this s
75
75
 
76
76
  Every result carries the `run_id` and a `console.apify.com` URL, so any claim an agent makes from this server can be traced back to the exact run that produced it.
77
77
 
78
+ ### No Apify account? Agents can pay per run with x402
79
+
80
+ Every tool in this catalog is eligible for Apify's [agentic payments](https://docs.apify.com/integrations/x402): an agent with a funded [Coinbase Agentic Wallet](https://docs.cdp.coinbase.com/agentic-wallet/welcome) (USDC on Base, $1 minimum) buys a prepaid Apify token over the x402 protocol and uses it as `APIFY_TOKEN` — no account, no billing setup, no API key. The ready-made skill is [apify.it/x402-awal](https://apify.com/apify.it/x402-awal):
81
+
82
+ ```bash
83
+ npx -y awal auth login <email> # one-time wallet auth
84
+ npx awal x402 pay 'https://agi.apify.com/protocols/x402/prepaid-tokens?amount=5&currency=usd' --max-amount 5000000 --json
85
+ # → returns a bearer token; export it as APIFY_TOKEN and start this server as usual
86
+ ```
87
+
88
+ The prepaid balance is an absolute spending cap and expires after 14 days. Every tool here charges only per result — none pass platform usage through, none require full permissions, and none run in Standby mode, which are the three things that make an Actor ineligible. Prices are in the catalog (`usdPer1000Results` on every search hit), so an agent can see the cost before spending.
89
+
78
90
  ## On honest answers
79
91
 
80
92
  These actors are built around one rule: **a failure must never be presentable as "nothing was found."** That distinction matters most in exactly the cases people use this for — telling a buyer a property is clear of contamination, telling a pilot an airspace is uncontrolled, telling a lender a borrower is unlicensed.
@@ -91,7 +103,7 @@ The underlying actors carry the same discipline: per-source status on every row,
91
103
  <!-- COVERAGE:START -->
92
104
  ## Coverage
93
105
 
94
- **116 tools**, every one reading an official US government API or bulk file. The MCP server exposes 15 of them directly — twelve named tools plus `search-gov-data-tools`, `describe-gov-data-tool` and `run-gov-data-tool`, which reach the rest — because agents choose badly when handed more than about twenty tools.
106
+ **120 tools**, every one reading an official US government API or bulk file. The MCP server exposes 15 of them directly — twelve named tools plus `search-gov-data-tools`, `describe-gov-data-tool` and `run-gov-data-tool`, which reach the rest — because agents choose badly when handed more than about twenty tools.
95
107
 
96
108
  Each entry links to its full input/output schema, pricing and worked examples.
97
109
 
@@ -119,9 +131,9 @@ Each entry links to its full input/output schema, pricing and worked examples.
119
131
 
120
132
  [bank-enforcement-tracker](https://apify.com/malonestar/bank-enforcement-tracker) · [fdic-branch-network-churn-rollup](https://apify.com/malonestar/fdic-branch-network-churn-rollup) · [fdic-ncua-health-rollup](https://apify.com/malonestar/fdic-ncua-health-rollup) · [fdic-sod-deposit-market-share-rollup](https://apify.com/malonestar/fdic-sod-deposit-market-share-rollup) · [fdic-structure-change-delta-monitor](https://apify.com/malonestar/fdic-structure-change-delta-monitor) · [fhlbank-membership-delta-monitor](https://apify.com/malonestar/fhlbank-membership-delta-monitor) · [hmda-fair-lending-disparity-rollup](https://apify.com/malonestar/hmda-fair-lending-disparity-rollup) · [sba-loan-portfolio-explorer](https://apify.com/malonestar/sba-loan-portfolio-explorer)
121
133
 
122
- **Securities, audit, pensions & sanctions** (8)
134
+ **Securities, audit, pensions & sanctions** (10)
123
135
 
124
- [adcvd-trade-remedy-tracker](https://apify.com/malonestar/adcvd-trade-remedy-tracker) · [consolidated-screening-list-delta](https://apify.com/malonestar/consolidated-screening-list-delta) · [fec-campaign-finance-delta](https://apify.com/malonestar/fec-campaign-finance-delta) · [pbgc-pension-failure-monitor](https://apify.com/malonestar/pbgc-pension-failure-monitor) · [pcaob-auditor-engagement-monitor](https://apify.com/malonestar/pcaob-auditor-engagement-monitor) · [reg-cf-lifecycle-monitor](https://apify.com/malonestar/reg-cf-lifecycle-monitor) · [ria-registration-delta-monitor](https://apify.com/malonestar/ria-registration-delta-monitor) · [short-interest-ftd-monitor](https://apify.com/malonestar/short-interest-ftd-monitor)
136
+ [adcvd-trade-remedy-tracker](https://apify.com/malonestar/adcvd-trade-remedy-tracker) · [consolidated-screening-list-delta](https://apify.com/malonestar/consolidated-screening-list-delta) · [fec-campaign-finance-delta](https://apify.com/malonestar/fec-campaign-finance-delta) · [pbgc-pension-failure-monitor](https://apify.com/malonestar/pbgc-pension-failure-monitor) · [pcaob-auditor-engagement-monitor](https://apify.com/malonestar/pcaob-auditor-engagement-monitor) · [reg-a-plus-lifecycle-monitor](https://apify.com/malonestar/reg-a-plus-lifecycle-monitor) · [reg-cf-lifecycle-monitor](https://apify.com/malonestar/reg-cf-lifecycle-monitor) · [ria-registration-delta-monitor](https://apify.com/malonestar/ria-registration-delta-monitor) · [short-interest-ftd-monitor](https://apify.com/malonestar/short-interest-ftd-monitor) · [uflpa-entity-list-monitor](https://apify.com/malonestar/uflpa-entity-list-monitor)
125
137
 
126
138
  **Licensing, exclusion & workforce screening** (10)
127
139
 
@@ -131,9 +143,9 @@ Each entry links to its full input/output schema, pricing and worked examples.
131
143
 
132
144
  [absentee-owner-lead-list-builder](https://apify.com/malonestar/absentee-owner-lead-list-builder) · [acris-deed-transfer-intel](https://apify.com/malonestar/acris-deed-transfer-intel) · [childcare-provider-leads](https://apify.com/malonestar/childcare-provider-leads) · [distressed-property-signal-stacker](https://apify.com/malonestar/distressed-property-signal-stacker) · [hud-affordable-housing-explorer](https://apify.com/malonestar/hud-affordable-housing-explorer) · [hud-qct-lihtc-boost-screener](https://apify.com/malonestar/hud-qct-lihtc-boost-screener) · [hud-section8-contract-expiration-monitor](https://apify.com/malonestar/hud-section8-contract-expiration-monitor) · [nyc-landlord-registry-lead-list](https://apify.com/malonestar/nyc-landlord-registry-lead-list) · [parcel-owner-lookup](https://apify.com/malonestar/parcel-owner-lookup)
133
145
 
134
- **Infrastructure, transport & airspace** (9)
146
+ **Infrastructure, transport & airspace** (10)
135
147
 
136
- [bts-airline-ontime-delay-climatology](https://apify.com/malonestar/bts-airline-ontime-delay-climatology) · [dod-mirta-military-installation-siting-screener](https://apify.com/malonestar/dod-mirta-military-installation-siting-screener) · [faa-drone-airspace-checker](https://apify.com/malonestar/faa-drone-airspace-checker) · [fhwa-nbi-bridge-risk-monitor](https://apify.com/malonestar/fhwa-nbi-bridge-risk-monitor) · [gsa-site-scanning-auditor](https://apify.com/malonestar/gsa-site-scanning-auditor) · [national-tunnel-inventory-risk-monitor](https://apify.com/malonestar/national-tunnel-inventory-risk-monitor) · [nhtsa-vpic-vin-decoder](https://apify.com/malonestar/nhtsa-vpic-vin-decoder) · [nid-dam-risk-monitor](https://apify.com/malonestar/nid-dam-risk-monitor) · [ntad-fra-rail-crossing-risk-screener](https://apify.com/malonestar/ntad-fra-rail-crossing-risk-screener)
148
+ [bts-airline-ontime-delay-climatology](https://apify.com/malonestar/bts-airline-ontime-delay-climatology) · [bts-db1b-fare-route-market-analytics](https://apify.com/malonestar/bts-db1b-fare-route-market-analytics) · [dod-mirta-military-installation-siting-screener](https://apify.com/malonestar/dod-mirta-military-installation-siting-screener) · [faa-drone-airspace-checker](https://apify.com/malonestar/faa-drone-airspace-checker) · [fhwa-nbi-bridge-risk-monitor](https://apify.com/malonestar/fhwa-nbi-bridge-risk-monitor) · [gsa-site-scanning-auditor](https://apify.com/malonestar/gsa-site-scanning-auditor) · [national-tunnel-inventory-risk-monitor](https://apify.com/malonestar/national-tunnel-inventory-risk-monitor) · [nhtsa-vpic-vin-decoder](https://apify.com/malonestar/nhtsa-vpic-vin-decoder) · [nid-dam-risk-monitor](https://apify.com/malonestar/nid-dam-risk-monitor) · [ntad-fra-rail-crossing-risk-screener](https://apify.com/malonestar/ntad-fra-rail-crossing-risk-screener)
137
149
 
138
150
  **Health, clinical & drug supply** (7)
139
151
 
@@ -143,9 +155,9 @@ Each entry links to its full input/output schema, pricing and worked examples.
143
155
 
144
156
  [npm-package-health-scorer](https://apify.com/malonestar/npm-package-health-scorer) · [ptab-trial-tracker](https://apify.com/malonestar/ptab-trial-tracker) · [sbom-vulnerability-rollup](https://apify.com/malonestar/sbom-vulnerability-rollup) · [uspto-patent-lapse-fto-monitor](https://apify.com/malonestar/uspto-patent-lapse-fto-monitor)
145
157
 
146
- **Labor & enforcement** (2)
158
+ **Labor & enforcement** (3)
147
159
 
148
- [dol-enforcement-rollup](https://apify.com/malonestar/dol-enforcement-rollup) · [warn-layoff-aggregator](https://apify.com/malonestar/warn-layoff-aggregator)
160
+ [dol-enforcement-rollup](https://apify.com/malonestar/dol-enforcement-rollup) · [osha-ita-injury-illness-establishment-monitor](https://apify.com/malonestar/osha-ita-injury-illness-establishment-monitor) · [warn-layoff-aggregator](https://apify.com/malonestar/warn-layoff-aggregator)
149
161
  <!-- COVERAGE:END -->
150
162
 
151
163
  ## Development
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gov-data-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "mcpName": "io.github.malonestar/gov-data-mcp",
5
5
  "description": "MCP server exposing published US government open-data tools (EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, state licensing boards) as agent-callable tools, backed by Apify Actors.",
6
6
  "type": "module",
package/src/catalog.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "generatedAt": "2026-09-01T01:24:22.865Z",
2
+ "generatedAt": "2026-09-19T19:42:38.044Z",
3
3
  "owner": "malonestar",
4
- "count": 116,
4
+ "count": 120,
5
5
  "actors": [
6
6
  {
7
7
  "slug": "absentee-owner-lead-list-builder",
@@ -504,6 +504,15 @@
504
504
  "description": "Safety cap on how many sites to screen in one run (1–5000). Extra sites beyond the cap are ignored. Example: 500.",
505
505
  "minimum": 1,
506
506
  "maximum": 5000
507
+ },
508
+ "simulateOutage": {
509
+ "type": "string",
510
+ "description": "Diagnostic seam for proving the failure paths without waiting for a real BLM outage. 'none' is normal operation and is what you want for real work. The corroborating option forces the row-count and Denver-negative-control probes to time out: the run must still SUCCEED, with drift_gate_status=verified_degraded on every row and the skipped probes named. The load-bearing option forces the layer-metadata and ProposedPlan-vocabulary probes to time out: the run must FAIL, emitting nothing and billing nothing. Both are routed through the same code path a genuine outage takes. Example: \"none\".",
511
+ "enum": [
512
+ "none",
513
+ "drift_corroborating_probe",
514
+ "drift_load_bearing_probe"
515
+ ]
507
516
  }
508
517
  },
509
518
  "required": [
@@ -672,6 +681,95 @@
672
681
  }
673
682
  }
674
683
  },
684
+ {
685
+ "slug": "bts-db1b-fare-route-market-analytics",
686
+ "actorId": "malonestar/bts-db1b-fare-route-market-analytics",
687
+ "title": "US Airline Fare & Route-Market Analytics (BTS DB1B)",
688
+ "description": "Historical US airline fares and route economics by quarter, from the official BTS DB1B 10% ticket survey. Average and median fares, carrier market share and concentration (HHI), distance and estimated passengers by route, carrier or airport, with honest sample weighting. Not live booking prices.",
689
+ "categories": [
690
+ "TRAVEL",
691
+ "DEVELOPER_TOOLS",
692
+ "AGENTS"
693
+ ],
694
+ "storeUrl": "https://apify.com/malonestar/bts-db1b-fare-route-market-analytics",
695
+ "pricing": {
696
+ "model": "PAY_PER_EVENT",
697
+ "event": "apify-default-dataset-item",
698
+ "unit": "Route fare-market result",
699
+ "usdPerUnit": 0.01,
700
+ "usdPer1000": 10,
701
+ "tierDiscountsUsdPerUnit": {
702
+ "FREE": 0.01,
703
+ "BRONZE": 0.008,
704
+ "SILVER": 0.007,
705
+ "GOLD": 0.0055,
706
+ "PLATINUM": 0.004,
707
+ "DIAMOND": 0.003
708
+ },
709
+ "actorStartUsd": null,
710
+ "since": "2026-09-01T18:03:54.041Z"
711
+ },
712
+ "inputSchema": {
713
+ "type": "object",
714
+ "properties": {
715
+ "sinceQuarter": {
716
+ "type": "string",
717
+ "description": "First quarter of BTS DB1B data to include, as YYYY-Qn (e.g. \"2025-Q1\") or YYYY-n (e.g. \"2025-1\"), n being 1-4. Leave blank to default to the quarter before the latest published quarter. The DB1B Origin & Destination Survey begins 1993-Q1 and is published with a ~1-2 quarter lag; the run discovers the latest available quarter live and reports it on every row. An unusable value (a month form, slash date, bare year, or quarter 5) FAILS the run loudly — it is never silently ignored. Example: \"2025-Q2\"."
718
+ },
719
+ "untilQuarter": {
720
+ "type": "string",
721
+ "description": "Last quarter of BTS DB1B data to include, as YYYY-Qn or YYYY-n. Leave blank to default to the latest published quarter. A window spanning more than 4 quarters is rejected (each quarter is a ~100 MB, ~7-million-row BTS download). A quarter BTS has not yet published is reported as missing — with allowPartial false (the default) the run fails loudly rather than quietly narrowing your window. Example: \"2025-Q2\"."
722
+ },
723
+ "origins": {
724
+ "type": "array",
725
+ "description": "Optional. IATA origin airport codes, e.g. [\"LAX\",\"JFK\"]. Leave empty for all origins. Markets are DIRECTIONAL in DB1B, so LAX-JFK and JFK-LAX are separate rows. An unfiltered, all-routes run over a full quarter aggregates tens of thousands of markets and is memory-heavy; a filter keeps it light. Example: [\"LAX\"].",
726
+ "items": {
727
+ "type": "string"
728
+ }
729
+ },
730
+ "dests": {
731
+ "type": "array",
732
+ "description": "Optional. IATA destination airport codes, e.g. [\"JFK\",\"ORD\"]. Leave empty for all destinations.",
733
+ "items": {
734
+ "type": "string"
735
+ }
736
+ },
737
+ "carriers": {
738
+ "type": "array",
739
+ "description": "Optional. BTS ticketing-carrier codes to include, e.g. [\"WN\",\"AA\",\"DL\",\"UA\",\"B6\"]. Market share and fares are attributed to the TICKETING carrier (who sold the ticket); the operating carrier differs on ~27% of rows (codeshare/regional). Leave empty for all carriers (DB1B includes ~37 codes, incl. foreign carriers on US-endpoint itineraries and a \"--\" placeholder). A code matching no rows fails the run with the list of carriers actually present — never a silent empty dataset.",
740
+ "items": {
741
+ "type": "string"
742
+ }
743
+ },
744
+ "groupBy": {
745
+ "type": "string",
746
+ "description": "How to roll markets up. \"route\" = one row per (directional origin-dest x quarter) across carriers; \"carrier_route\" = one row per (ticketing carrier x origin-dest x quarter); \"origin_airport\" = one row per (origin airport x quarter, all its outbound markets); \"market\" = one row per (origin city-market x dest city-market x quarter), which groups multi-airport metros (e.g. all NYC airports together). Carrier market-share/HHI fields are meaningful for route/origin_airport/market (which span carriers) and trivial for carrier_route. Omitted = \"route\". Example: \"route\".",
747
+ "enum": [
748
+ "route",
749
+ "carrier_route",
750
+ "origin_airport",
751
+ "market"
752
+ ]
753
+ },
754
+ "minPassengers": {
755
+ "type": "integer",
756
+ "description": "Suppress groups with fewer than this many SAMPLE passengers in a quarter (noise control — a market with 2 sampled passengers gives a meaningless average fare). Remember DB1B is a 10% sample, so 10 sample passengers ~ 100 estimated. Suppressed-group count is disclosed on every emitted row as groups_suppressed_below_min_passengers. Set 0 to keep everything. Omitted = 10. Example: 10.",
757
+ "minimum": 0,
758
+ "maximum": 1000000
759
+ },
760
+ "maxResults": {
761
+ "type": "integer",
762
+ "description": "Hard cap on emitted rows — each row is one billed result. Enforced by a single audited code path for every groupBy mode; when the cap bites, rows are dropped smallest-groups-first and every emitted row carries results_truncated=true. Omitted = 500. Example: 500.",
763
+ "minimum": 1,
764
+ "maximum": 20000
765
+ },
766
+ "allowPartial": {
767
+ "type": "boolean",
768
+ "description": "If a requested quarter cannot be retrieved (not yet published by BTS, or the download failed), the run FAILS loudly by default so a partial window is never mistaken for a complete one. Set true to proceed with the quarters that did arrive — every row then reports quarters_missing and data_complete=false. Applied by default if omitted: false."
769
+ }
770
+ }
771
+ }
772
+ },
675
773
  {
676
774
  "slug": "calfire-fhsz-screener",
677
775
  "actorId": "malonestar/calfire-fhsz-screener",
@@ -725,6 +823,15 @@
725
823
  "description": "Safety cap on how many assets to screen in one run. Example: 500.",
726
824
  "minimum": 1,
727
825
  "maximum": 5000
826
+ },
827
+ "simulateOutage": {
828
+ "type": "string",
829
+ "description": "Diagnostic only - leave as 'none' for real screening. 'control' forces the corroborating Sacramento negative-control query to fail, which must leave the run SUCCEEDING with drift_gate_status=verified_degraded, because that probe cross-checks a conclusion the load-bearing probes already establish. 'all' forces every drift query to fail, which must FAIL the run with zero rows and zero billing because the load-bearing probes can then confirm nothing. Example: \"none\".",
830
+ "enum": [
831
+ "none",
832
+ "control",
833
+ "all"
834
+ ]
728
835
  }
729
836
  },
730
837
  "required": [
@@ -735,7 +842,7 @@
735
842
  {
736
843
  "slug": "cbrs-coastal-barrier-screener",
737
844
  "actorId": "malonestar/cbrs-coastal-barrier-screener",
738
- "title": "CBRS Coastal Barrier Screener - CBRA Flood Insurance Bar",
845
+ "title": "USFWS CBRS Coastal Barrier Screener - CBRA Flood Insurance Bar",
739
846
  "description": "Batch-screen coordinates against the USFWS Coastal Barrier Resources System. Returns System Unit vs Otherwise Protected Area, the flood-insurance prohibition date FEMA actually applies, the official 20 ft boundary buffer zone, distance to the CBRS boundary, and the official unit map link.",
740
847
  "categories": [
741
848
  "REAL_ESTATE",
@@ -881,7 +988,7 @@
881
988
  },
882
989
  "maxResults": {
883
990
  "type": "integer",
884
- "description": "Hard cap on the number of disease-week rows returned across all pages (protects run time and cost). Default 1000. Example: 1000."
991
+ "description": "Hard cap on the number of disease-week rows returned across all pages (protects run time and cost). Default 1000. Example: 140. Applied by default if omitted: 1000."
885
992
  }
886
993
  }
887
994
  }
@@ -889,7 +996,7 @@
889
996
  {
890
997
  "slug": "cdfi-nmtc-lowincome-energy-bonus-screener",
891
998
  "actorId": "malonestar/cdfi-nmtc-lowincome-energy-bonus-screener",
892
- "title": "NMTC Low-Income Community Screener — IRA 48(e) Solar Bonus",
999
+ "title": "CDFI Fund NMTC Low-Income Community Screener - IRA 48(e) Bonus",
893
1000
  "description": "Coordinate lookup for the IRA 48(e) low-income clean-energy bonus. Batch lat/lon against CDFI Fund NMTC Low-Income Communities (IRC 45D(e)); each returns in_nmtc_low_income_community, tract GEOID, poverty/MFI basis, Category 1 bonus flag, adder, and an optional HUD QCT flag. MCP-ready.",
894
1001
  "categories": [
895
1002
  "REAL_ESTATE",
@@ -1831,7 +1938,7 @@
1831
1938
  {
1832
1939
  "slug": "energy-corridor-368-screener",
1833
1940
  "actorId": "malonestar/energy-corridor-368-screener",
1834
- "title": "Section 368 Energy Corridor Screener - Federal ROW Siting Flag",
1941
+ "title": "BLM Section 368 Energy Corridor Screener - Federal ROW Siting",
1835
1942
  "description": "Screens coordinates against BLM Section 368 West-wide Energy Corridors using BLM current designations plus the Argonne mirror. Returns corridor name, width, permitted use, whether a later plan amendment deleted it, distance to the nearest corridor and a ROW streamlining signal.",
1836
1943
  "categories": [
1837
1944
  "REAL_ESTATE",
@@ -2005,7 +2112,7 @@
2005
2112
  },
2006
2113
  "maxHitsPerProgram": {
2007
2114
  "type": "integer",
2008
- "description": "Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 50.",
2115
+ "description": "Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 10. Applied by default if omitted: 50.",
2009
2116
  "minimum": 1,
2010
2117
  "maximum": 1000
2011
2118
  },
@@ -2247,7 +2354,7 @@
2247
2354
  {
2248
2355
  "slug": "epa-impaired-waters-303d-screener",
2249
2356
  "actorId": "malonestar/epa-impaired-waters-303d-screener",
2250
- "title": "CWA 303(d) Impaired Waters Proximity Screener — NPDES/Phase-I",
2357
+ "title": "EPA 303(d) Impaired Waters Proximity Screener - NPDES / Phase I",
2251
2358
  "description": "CWA Section 303(d) impaired-waters proximity API — screens coordinates against EPA ATTAINS impaired/threatened waters: nearest impaired stream or lake, distance, pollutant causes, TMDL status, and an NPDES/stormwater permitting flag for Phase-I ESA site due diligence.",
2252
2359
  "categories": [
2253
2360
  "REAL_ESTATE",
@@ -2370,7 +2477,7 @@
2370
2477
  {
2371
2478
  "slug": "epa-rcra-corrective-action-cleanup-monitor",
2372
2479
  "actorId": "malonestar/epa-rcra-corrective-action-cleanup-monitor",
2373
- "title": "RCRA Corrective Action Cleanup Timeline & Overdue Milestones",
2480
+ "title": "EPA RCRA Corrective Action Cleanup Timeline & Overdue Events",
2374
2481
  "description": "Track RCRA corrective-action cleanups from EPA RCRAInfo: milestone dates, scheduled vs actual, schedule slip, overdue milestones, remedy status, engineering and institutional controls, and confirmed release media per facility.",
2375
2482
  "categories": [
2376
2483
  "REAL_ESTATE",
@@ -3173,7 +3280,7 @@
3173
3280
  },
3174
3281
  "maxResults": {
3175
3282
  "type": "integer",
3176
- "description": "Hard cap on the number of dataset rows emitted, for example 500. This is what you are billed for, so it defaults to 500 - the same number as the prefill - and never silently sweeps a whole state. Raise it deliberately for a full sweep (a large state can produce tens of thousands of rows). Example: 500.",
3283
+ "description": "Hard cap on the number of dataset rows emitted. This is what you are billed for, so it never silently sweeps a whole state. The form is prefilled with 60 - a deliberately small, cheap demo that a free-tier account can run whole - while the default applied when you omit the field entirely is 500. Raise it deliberately for a full sweep (a large state can produce tens of thousands of rows). Example: 60. Applied by default if omitted: 500.",
3177
3284
  "minimum": 1,
3178
3285
  "maximum": 100000
3179
3286
  },
@@ -3205,7 +3312,7 @@
3205
3312
  "slug": "fdic-ncua-health-rollup",
3206
3313
  "actorId": "malonestar/fdic-ncua-health-rollup",
3207
3314
  "title": "Bank & Credit-Union Financial Health API — FDIC/NCUA QoQ",
3208
- "description": "Bank & credit-union financial-health API on keyless FDIC data (NCUA v1.1): unified per-institution assets, deposits, equity, ROA, ROE, NIM and asset quality, with quarter-over-quarter deltas, peer-percentile scoring, and derived health flags (deposit outflow, low ROA, rising NPL).",
3315
+ "description": "Bank financial-stress screen on keyless FDIC data: capital ratios, CRE concentration (2006 guidance two-prong test), deposit runoff, ROA/ROE/NIM and asset quality per institution, with quarter-over-quarter deltas, peer-percentile scoring and health flags (deposit outflow, low ROA, rising NPL).",
3209
3316
  "categories": [
3210
3317
  "LEAD_GENERATION",
3211
3318
  "DEVELOPER_TOOLS",
@@ -3370,7 +3477,7 @@
3370
3477
  },
3371
3478
  "maxResults": {
3372
3479
  "type": "integer",
3373
- "description": "Maximum number of dataset rows to emit (caps your cost). Areas are processed largest-deposits-first, so the cap keeps the biggest markets. When the cap bites, results_truncated=true is stamped on every row - the shares and HHI themselves are always computed over the COMPLETE market, never over the truncated output. Example: 500.",
3480
+ "description": "Maximum number of dataset rows to emit (caps your cost). Areas are processed largest-deposits-first, so the cap keeps the biggest markets. When the cap bites, results_truncated=true is stamped on every row - the shares and HHI themselves are always computed over the COMPLETE market, never over the truncated output. Example: 80. Applied by default if omitted: 500.",
3374
3481
  "minimum": 1,
3375
3482
  "maximum": 100000
3376
3483
  },
@@ -3589,7 +3696,7 @@
3589
3696
  },
3590
3697
  "maxResults": {
3591
3698
  "type": "integer",
3592
- "description": "Maximum number of itemized rows to fetch before delta, concentration or graph processing. Rows come back NEWEST FIRST, so a cap gives you the most recent slice - not a ranked or representative sample. Concentration and graph rows computed over a capped fetch are labelled analysis_basis=\"sample\" rather than being presented as the population figure. Applied by default if omitted: 1000.",
3699
+ "description": "Maximum number of itemized rows to fetch before delta, concentration or graph processing. Rows come back NEWEST FIRST, so a cap gives you the most recent slice - not a ranked or representative sample. Concentration and graph rows computed over a capped fetch are labelled analysis_basis=\"sample\" rather than being presented as the population figure. Example: 120. Applied by default if omitted: 1000.",
3593
3700
  "minimum": 1,
3594
3701
  "maximum": 500000
3595
3702
  },
@@ -3751,7 +3858,7 @@
3751
3858
  {
3752
3859
  "slug": "fhlbank-membership-delta-monitor",
3753
3860
  "actorId": "malonestar/fhlbank-membership-delta-monitor",
3754
- "title": "FHLBank Membership Roster & Delta Monitor",
3861
+ "title": "FHFA FHLBank Membership Roster & Delta Monitor",
3755
3862
  "description": "FHLBank System membership roster and quarter-over-quarter delta tracker sourced from FHFA's published member file: joins, exits and attribute changes across all 11 districts, with CERT/FED_ID/NCUA_ID/NAIC_ID join keys for correspondent banking, KYB and competitive intel.",
3756
3863
  "categories": [
3757
3864
  "BUSINESS",
@@ -3904,7 +4011,7 @@
3904
4011
  {
3905
4012
  "slug": "fuds-defense-site-screener",
3906
4013
  "actorId": "malonestar/fuds-defense-site-screener",
3907
- "title": "FUDS Formerly Used Defense Sites Screener - UXO & Contamination",
4014
+ "title": "USACE FUDS Formerly Used Defense Sites Screener - UXO Risk",
3908
4015
  "description": "Screen any US coordinate against the USACE Formerly Used Defense Sites inventory: on-property boundary intersect, nearest FUDS property, munitions response sites (MMRP/UXO) and contamination projects (IRP), split by hazard.",
3909
4016
  "categories": [
3910
4017
  "REAL_ESTATE",
@@ -4434,7 +4541,7 @@
4434
4541
  {
4435
4542
  "slug": "historic-land-use-sic-contaminant-screener",
4436
4543
  "actorId": "malonestar/historic-land-use-sic-contaminant-screener",
4437
- "title": "Historic Land Use Screener - Contaminating SIC/NAICS Sites",
4544
+ "title": "EPA FRS Historic Land Use Screener - Contaminating SIC/NAICS",
4438
4545
  "description": "Screens a coordinate or address radius against EPA FRS SIC and NAICS classifications to find dry cleaners, gas stations, plating shops, auto shops, printers and other recognised contaminating land uses, for ASTM E1527-21 Section 8.3 prior-use review.",
4439
4546
  "categories": [
4440
4547
  "REAL_ESTATE",
@@ -4581,7 +4688,7 @@
4581
4688
  {
4582
4689
  "slug": "hmda-fair-lending-disparity-rollup",
4583
4690
  "actorId": "malonestar/hmda-fair-lending-disparity-rollup",
4584
- "title": "HMDA Fair Lending Disparity Analysis — Denial & Pricing",
4691
+ "title": "CFPB HMDA Fair Lending Disparity Analysis - Denial & Pricing",
4585
4692
  "description": "Fair-lending exam analytics on CFPB HMDA data: denial-rate disparity index with two-proportion z-tests, denial reasons, higher-priced lending, LMI tract redlining screen, and lender-vs-market benchmarks by LEI, state, MSA, county or tract.",
4586
4693
  "categories": [
4587
4694
  "AGENTS",
@@ -4793,7 +4900,7 @@
4793
4900
  },
4794
4901
  "maxResults": {
4795
4902
  "type": "integer",
4796
- "description": "Maximum number of site rows to return. Applied by default if omitted: 1000.",
4903
+ "description": "Maximum number of site rows to return. Example: 140. Applied by default if omitted: 1000.",
4797
4904
  "minimum": 1,
4798
4905
  "maximum": 100000
4799
4906
  },
@@ -5670,7 +5777,7 @@
5670
5777
  {
5671
5778
  "slug": "nadac-price-movers",
5672
5779
  "actorId": "malonestar/nadac-price-movers",
5673
- "title": "NADAC Drug Pricing API — Weekly NDC Price Movers",
5780
+ "title": "CMS NADAC Drug Pricing API - Weekly NDC Price Movers",
5674
5781
  "description": "Drug pricing API built on CMS/Medicaid NADAC weekly data: per-NDC price time series, week-over-week deltas, and biggest-mover spike/drop detection. Filter by NDC or drug name over any date window to track generic drug price changes. Keyless, official source.",
5675
5782
  "categories": [
5676
5783
  "DEVELOPER_TOOLS",
@@ -5800,7 +5907,7 @@
5800
5907
  {
5801
5908
  "slug": "nfip-flood-loss-risk-screener",
5802
5909
  "actorId": "malonestar/nfip-flood-loss-risk-screener",
5803
- "title": "NFIP Flood Loss Risk Screener — Property Loss History Score",
5910
+ "title": "FEMA NFIP Flood Loss Risk Screener - Claims History by Address",
5804
5911
  "description": "Flood loss history by property from FEMA NFIP paid claims: count, total paid, repetitive-loss flag, recency and a 0-100 flood-loss score within a radius of each lat/lon.",
5805
5912
  "categories": [
5806
5913
  "REAL_ESTATE",
@@ -5868,7 +5975,7 @@
5868
5975
  {
5869
5976
  "slug": "nhd-surface-water-404-screener",
5870
5977
  "actorId": "malonestar/nhd-surface-water-404-screener",
5871
- "title": "NHD Surface Water & Section 404 Wetland Screener",
5978
+ "title": "USGS NHD Surface Water & Section 404 Wetland Screener",
5872
5979
  "description": "Screen any lat/lon against USGS NHDPlus HR surface water. 94 fields: exact distance to the nearest perennial, intermittent and ephemeral reach, waterbody type and purpose, mean annual flow, stream order, HUC-8/10/12, a jurisdictional-likelihood call with its reasoning, and a Section 404/WOTUS flag.",
5873
5980
  "categories": [
5874
5981
  "BUSINESS",
@@ -6344,7 +6451,7 @@
6344
6451
  {
6345
6452
  "slug": "nrel-pvwatts-solar-resource-scorer",
6346
6453
  "actorId": "malonestar/nrel-pvwatts-solar-resource-scorer",
6347
- "title": "Solar Resource & PVWatts Yield Scorer — Batch Site Screening",
6454
+ "title": "NREL PVWatts Solar Resource & Yield Scorer - Batch Site Screen",
6348
6455
  "description": "Batch solar resource assessment via NREL PVWatts v8. Lat/lon list in; annual/monthly kWh yield, capacity factor, irradiance, and a solar-worthiness class out. The resource-quality layer for solar, storage, and data-center siting.",
6349
6456
  "categories": [
6350
6457
  "REAL_ESTATE",
@@ -6428,8 +6535,8 @@
6428
6535
  {
6429
6536
  "slug": "nrhp-historic-place-screener",
6430
6537
  "actorId": "malonestar/nrhp-historic-place-screener",
6431
- "title": "NRHP Historic Place Screener — Section 106 & Tax Credit",
6432
- "description": "Screen coordinates against the National Register of Historic Places. Per asset: nearest listed property, National Historic Landmark flag, listed-district point-in-polygon, plus Section 106 review and 20% historic tax-credit screening flags.",
6538
+ "title": "NPS NRHP Historic Place Screener - Section 106 & Tax Credit",
6539
+ "description": "Screen coordinates against the NPS National Register of Historic Places. Per asset: nearest listed property, National Historic Landmark flag, listed-district point-in-polygon, plus Section 106 review and 20% historic tax-credit screening flags.",
6433
6540
  "categories": [
6434
6541
  "AGENTS",
6435
6542
  "DEVELOPER_TOOLS",
@@ -6777,7 +6884,7 @@
6777
6884
  },
6778
6885
  "maxResults": {
6779
6886
  "type": "integer",
6780
- "description": "Maximum number of well/permit records to return per state. Applied by default if omitted: 1000.",
6887
+ "description": "Maximum number of well/permit records to return per state. Example: 120. Applied by default if omitted: 1000.",
6781
6888
  "minimum": 1,
6782
6889
  "maximum": 200000
6783
6890
  },
@@ -6809,8 +6916,8 @@
6809
6916
  {
6810
6917
  "slug": "orphaned-well-proximity-screener",
6811
6918
  "actorId": "malonestar/orphaned-well-proximity-screener",
6812
- "title": "Orphaned Oil & Gas Well Proximity Screener - Phase I ESA",
6813
- "description": "Screen any US coordinate against 117,672 documented orphaned oil and gas wells. Returns count in radius, nearest-well distance and bearing, status, well type, positional accuracy and a Phase I ESA risk signal. Covers 27 states; a site outside coverage is reported as such, never as clear.",
6919
+ "title": "USGS Orphaned Oil & Gas Well Proximity Screener - Phase I ESA",
6920
+ "description": "Screen any US coordinate against 117,672 USGS-documented orphaned oil and gas wells. Returns count in radius, nearest-well distance and bearing, status, well type, positional accuracy and a Phase I ESA risk signal. Covers 27 states; a site outside coverage is reported as such, never as clear.",
6814
6921
  "categories": [
6815
6922
  "REAL_ESTATE",
6816
6923
  "DEVELOPER_TOOLS",
@@ -6890,10 +6997,97 @@
6890
6997
  ]
6891
6998
  }
6892
6999
  },
7000
+ {
7001
+ "slug": "osha-ita-injury-illness-establishment-monitor",
7002
+ "actorId": "malonestar/osha-ita-injury-illness-establishment-monitor",
7003
+ "title": "OSHA Injury & Illness Data (ITA Form 300A) Rate Monitor",
7004
+ "description": "Establishment-level OSHA Form 300A injury and illness data from the OSHA Injury Tracking Application (ITA), CY2016 onward. Total Case Rate and DART injury rates from OSHA's own formula, a peer-industry median benchmark computed from the filers themselves, and a year-over-year delta. Keyless.",
7005
+ "categories": [
7006
+ "BUSINESS",
7007
+ "DEVELOPER_TOOLS",
7008
+ "AGENTS"
7009
+ ],
7010
+ "storeUrl": "https://apify.com/malonestar/osha-ita-injury-illness-establishment-monitor",
7011
+ "pricing": {
7012
+ "model": "PAY_PER_EVENT",
7013
+ "event": "apify-default-dataset-item",
7014
+ "unit": "Establishment injury & illness record",
7015
+ "usdPerUnit": 0.008,
7016
+ "usdPer1000": 8,
7017
+ "tierDiscountsUsdPerUnit": {
7018
+ "FREE": 0.008,
7019
+ "BRONZE": 0.0064,
7020
+ "SILVER": 0.0056,
7021
+ "GOLD": 0.0044,
7022
+ "PLATINUM": 0.0044,
7023
+ "DIAMOND": 0.0044
7024
+ },
7025
+ "actorStartUsd": null,
7026
+ "since": "2026-09-04T05:13:05.557Z"
7027
+ },
7028
+ "inputSchema": {
7029
+ "type": "object",
7030
+ "properties": {
7031
+ "states": {
7032
+ "type": "array",
7033
+ "description": "REQUIRED. Two-letter state codes to return establishments for, e.g. [\"CO\"] or [\"TX\",\"NM\"]. OSHA publishes roughly 400,000 establishment records per calendar year, so an unscoped national run is rejected before it starts rather than billed. Matching is case-insensitive on purpose: the CY2022 file carries 24 mixed-case spellings such as \"Fl\", \"ca\" and \"Co\", and a case-sensitive filter silently drops those establishments. OSHA also publishes AS, GU, MP, PR, VI and the military codes AA, AE and AP. Example: [\"CO\"].",
7034
+ "items": {
7035
+ "type": "string"
7036
+ }
7037
+ },
7038
+ "years": {
7039
+ "type": "array",
7040
+ "description": "REQUIRED. Calendar years of Form 300A data, e.g. [\"2024\"]. OSHA collects one year at a time and publishes each year as a separate 12-85 MB download, so at most 3 years per run. Summary data exists from 2016 onward; the exact list of published years is read live from OSHA's own data page on every run and an unpublished year fails loudly with the list of years that do exist. In \"delta\" mode pass exactly one year — the prior year is fetched automatically. Example: [\"2024\"].",
7041
+ "items": {
7042
+ "type": "string"
7043
+ }
7044
+ },
7045
+ "mode": {
7046
+ "type": "string",
7047
+ "description": "\"establishments\" returns one row per establishment per calendar year, with the OSHA-formula Total Case Rate and DART rate plus a peer-industry benchmark. \"delta\" compares the requested year against the year before it and returns one row per establishment with the rate change and a filing_status of continuing / new_filer / stopped_filing. Omitted = \"establishments\". Example: \"establishments\".",
7048
+ "enum": [
7049
+ "establishments",
7050
+ "delta"
7051
+ ]
7052
+ },
7053
+ "naicsPrefixes": {
7054
+ "type": "array",
7055
+ "description": "Optional. Two- to six-digit NAICS prefixes, e.g. [\"23\"] for construction, [\"2382\"] for building-equipment contractors, [\"238310\"] for drywall contractors, [\"622\"] for hospitals. Matching is by PREFIX rather than exact code because OSHA stores three NAICS vintages side by side in the same file (2012, 2017 and 2022 codes all appear in CY2024, plus a \"0\" vintage sentinel), so an exact-code filter against one vintage's code list silently loses whole industries. Leave empty for all industries.",
7056
+ "items": {
7057
+ "type": "string"
7058
+ }
7059
+ },
7060
+ "nameContains": {
7061
+ "type": "string",
7062
+ "description": "Optional. Case-insensitive substring matched against BOTH establishment_name and company_name, e.g. \"Kroger\" or \"Post Acute\". Useful for tracking one employer's whole establishment footprint across a state. Leave blank for all names."
7063
+ },
7064
+ "minEmployees": {
7065
+ "type": "integer",
7066
+ "description": "Optional. Keep only establishments reporting at least this many annual average employees. An establishment that reports no employee count is excluded when this is above 0, because an unreported count is not a small count. Note OSHA does not validate this figure — the CY2024 file contains a single establishment reporting 41,092,597 employees, which is flagged rather than corrected. Omitted or 0 = no employee filter.",
7067
+ "minimum": 0,
7068
+ "maximum": 10000000
7069
+ },
7070
+ "onlyWithRecordableCases": {
7071
+ "type": "boolean",
7072
+ "description": "When true, keep only establishments that reported at least one recordable case or death. Roughly 43% of CY2024 filers reported zero cases, and a zero-case filing is a real, meaningful answer, so this is off by default. Turning it on does not change any rate — it only narrows which establishments are returned and therefore what you are billed for. Applied by default if omitted: false."
7073
+ },
7074
+ "maxResults": {
7075
+ "type": "integer",
7076
+ "description": "Hard cap on emitted rows — each row is one billed result. Enforced by a single audited code path for both modes plus a pre-push tripwire. When the cap bites, rows are ordered trustworthy-rate-first (an establishment reporting 547 employees against 6,571 hours produces an arithmetically valid but meaningless rate, and those sort below the sound ones rather than dominating the top of your results), and every emitted row carries results_truncated=true and matched_rows_total so a capped answer is never mistaken for a complete one. Omitted = 500. Example: 500.",
7077
+ "minimum": 1,
7078
+ "maximum": 20000
7079
+ }
7080
+ },
7081
+ "required": [
7082
+ "states",
7083
+ "years"
7084
+ ]
7085
+ }
7086
+ },
6893
7087
  {
6894
7088
  "slug": "padus-protected-lands-screener",
6895
7089
  "actorId": "malonestar/padus-protected-lands-screener",
6896
- "title": "PAD-US Protected Lands Screener — Owner & GAP Status",
7090
+ "title": "USGS PAD-US Protected Lands Screener - Owner & GAP Status",
6897
7091
  "description": "Protected lands + public land ownership screener. Point-in-polygon check of coordinates against USGS PAD-US: returns owner/manager agency, Federal/State/Local/Private type, designation, GAP status and public access per asset.",
6898
7092
  "categories": [
6899
7093
  "REAL_ESTATE",
@@ -7318,10 +7512,98 @@
7318
7512
  ]
7319
7513
  }
7320
7514
  },
7515
+ {
7516
+ "slug": "reg-a-plus-lifecycle-monitor",
7517
+ "actorId": "malonestar/reg-a-plus-lifecycle-monitor",
7518
+ "title": "SEC EDGAR Reg A+ Offering Lifecycle & Outcomes Monitor",
7519
+ "description": "Track SEC Regulation A / Reg A+ offerings end to end from EDGAR, keyless: 1-A offerings and 253G2 circulars, 1-K annual reports, 1-U material events and 1-Z exit reports with sell-through. Feed, issuer, outcomes and delta modes — the outcome lifecycle the offering-only incumbents never sell.",
7520
+ "categories": [
7521
+ "BUSINESS",
7522
+ "DEVELOPER_TOOLS",
7523
+ "AGENTS"
7524
+ ],
7525
+ "storeUrl": "https://apify.com/malonestar/reg-a-plus-lifecycle-monitor",
7526
+ "pricing": {
7527
+ "model": "PAY_PER_EVENT",
7528
+ "event": "apify-default-dataset-item",
7529
+ "unit": "Reg A+ lifecycle result",
7530
+ "usdPerUnit": 0.01,
7531
+ "usdPer1000": 10,
7532
+ "tierDiscountsUsdPerUnit": {
7533
+ "FREE": 0.01,
7534
+ "BRONZE": 0.008,
7535
+ "SILVER": 0.007,
7536
+ "GOLD": 0.0055,
7537
+ "PLATINUM": 0.004,
7538
+ "DIAMOND": 0.003
7539
+ },
7540
+ "actorStartUsd": null,
7541
+ "since": "2026-09-01T18:03:54.675Z"
7542
+ },
7543
+ "inputSchema": {
7544
+ "type": "object",
7545
+ "properties": {
7546
+ "mode": {
7547
+ "type": "string",
7548
+ "description": "What to return. \"feed\" = Regulation A / Reg A+ lifecycle events (1-A offering statements, 253G2 qualified offering circulars, 1-K annual reports, 1-SA semiannual reports, 1-U current reports, 1-Z exit reports) in a date window. \"outcomes\" = Form 1-K annual reports with issuer, reporting period, fiscal year end and securities-outstanding detail from each filing's XML — the survival / still-reporting signal (note: Reg A 1-K financial statements are filed as HTML/PDF exhibits, NOT structured XML, so financial columns are populated from the 1-A offering, not the 1-K). \"issuer\" = every Reg A lifecycle filing for one company (by cik or issuerQuery), XML-enriched. \"delta\" = only filings new since your last run for this scope, tracked in the named key-value store 'reg-a-plus-lifecycle-baseline'; the FIRST delta run stores a baseline and fails with an explanatory message rather than billing the whole feed as new. Example: \"feed\".",
7549
+ "enum": [
7550
+ "feed",
7551
+ "outcomes",
7552
+ "issuer",
7553
+ "delta"
7554
+ ]
7555
+ },
7556
+ "formTypes": {
7557
+ "type": "array",
7558
+ "description": "Which Reg A form types to include (feed and delta modes; outcomes mode always uses 1-K only). Allowed values: 1-A (offering statement), 253G1 / 253G2 / 253G3 / 253G4 (qualified offering circular), 1-K (annual report), 1-SA (semiannual report), 1-U (current report / material events), 1-Z (exit report), DOS (draft offering statement). Leave empty for the default lifecycle spine: 1-A, 253G2, 1-K, 1-SA, 1-U, 1-Z. Amendments (e.g. 1-A/A) are included under their base form and flagged is_amendment. Example: [\"1-A\",\"253G2\",\"1-K\",\"1-SA\",\"1-U\",\"1-Z\"].",
7559
+ "items": {
7560
+ "type": "string"
7561
+ }
7562
+ },
7563
+ "startDate": {
7564
+ "type": "string",
7565
+ "description": "Only include filings filed on or after this date. STRICTLY YYYY-MM-DD (e.g. 2026-01-01) — slash dates, month names and compact dates are rejected with a loud failure because they cannot be applied unambiguously. Leave blank for no lower bound (Reg A+ began 2015-06-19). Example: \"2026-01-01\"."
7566
+ },
7567
+ "endDate": {
7568
+ "type": "string",
7569
+ "description": "Only include filings filed on or before this date. STRICTLY YYYY-MM-DD. Leave blank for no upper bound (today). An unusable value fails the run loudly; nothing is billed."
7570
+ },
7571
+ "state": {
7572
+ "type": "string",
7573
+ "description": "Optional 2-letter US state/territory code (e.g. TX) filtering on the issuer's principal business address. Applied server-side via the EDGAR locationCodes parameter AND re-validated on every returned row — if EDGAR ever stops applying the filter the run fails loudly instead of shipping a national feed labelled as one state."
7574
+ },
7575
+ "platformQuery": {
7576
+ "type": "string",
7577
+ "description": "Optional crowdfunding platform, broker-dealer or service-provider name, e.g. \"StartEngine\", \"DealMaker\" or \"Dalmore Group\". Matched as an exact phrase via EDGAR full-text search against the filing documents (Reg A does not carry a structured platform field, so this is a document-text match, not a structured filter). Use the platform's legal name as it appears in offering circulars."
7578
+ },
7579
+ "cik": {
7580
+ "type": "string",
7581
+ "description": "SEC CIK number of the issuer for issuer mode, with or without leading zeros (e.g. 2083128). Find it on any EDGAR filing page. issuer mode requires cik or issuerQuery."
7582
+ },
7583
+ "issuerQuery": {
7584
+ "type": "string",
7585
+ "description": "Company-name phrase for issuer mode when you do not know the CIK, e.g. \"Elio Motors\". Matched as a phrase via EDGAR full-text search; prefer cik for an exact match."
7586
+ },
7587
+ "enrichXml": {
7588
+ "type": "boolean",
7589
+ "description": "In feed/delta modes, also fetch each filing's primary_doc.xml to add the structured fields. 1-A adds offering tier, price, aggregate offering, jurisdiction count, auditor, and a one-year financial snapshot (total assets, revenue, net income, equity); 1-K adds reporting period, fiscal year end, shell-company flag and securities outstanding; 1-Z adds securities qualified vs sold, net proceeds, record holders and exit sell-through. Adds one polite EDGAR request per 1-A/1-K/1-Z row (slower). 253G2/1-SA/1-U/DOS have no structured XML (xml_status=not_applicable). outcomes and issuer modes always enrich. When off, those columns are null with xml_status=\"not_fetched\" — null means NOT FETCHED, never \"none\". Applied by default if omitted: false."
7590
+ },
7591
+ "maxResults": {
7592
+ "type": "integer",
7593
+ "description": "Hard cap on rows emitted AND billed this run (newest filings first). Every row carries matched_total and results_truncated so a capped answer is never mistaken for a complete one. Example: 200.",
7594
+ "minimum": 1,
7595
+ "maximum": 5000
7596
+ }
7597
+ },
7598
+ "required": [
7599
+ "mode"
7600
+ ]
7601
+ }
7602
+ },
7321
7603
  {
7322
7604
  "slug": "reg-cf-lifecycle-monitor",
7323
7605
  "actorId": "malonestar/reg-cf-lifecycle-monitor",
7324
- "title": "Reg CF Crowdfunding Lifecycle & Outcomes Monitor — SEC EDGAR",
7606
+ "title": "SEC EDGAR Reg CF Crowdfunding Lifecycle & Outcomes Monitor",
7325
7607
  "description": "Track US Regulation Crowdfunding beyond the offering feed: new Form C filings, C-U funding progress, C-AR annual reports with two-year revenue and net income, and C-TR/C-W terminations — straight from SEC EDGAR, keyless. Feed, issuer, outcomes and delta modes with honest per-row provenance.",
7326
7608
  "categories": [
7327
7609
  "BUSINESS",
@@ -7816,7 +8098,7 @@
7816
8098
  {
7817
8099
  "slug": "sos-registry-monitor",
7818
8100
  "actorId": "malonestar/sos-registry-monitor",
7819
- "title": "US Business Entity Search & New-Business Monitor (KYB API)",
8101
+ "title": "Secretary of State Business Search & New-Business Monitor API",
7820
8102
  "description": "Business entity search & KYB API across official US Secretary of State registries. Search companies by name and monitor newly formed LLCs and corporations for lead generation. Bulk and date-range capable, sourced from state open-data portals — no anti-bot. Keyless.",
7821
8103
  "categories": [
7822
8104
  "LEAD_GENERATION",
@@ -7985,7 +8267,7 @@
7985
8267
  {
7986
8268
  "slug": "state-tank-spill-registry-screener",
7987
8269
  "actorId": "malonestar/state-tank-spill-registry-screener",
7988
- "title": "UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL",
8270
+ "title": "EPA UST Finder, LUST & Spill Registry Screener - NY/CA/TX/FL",
7989
8271
  "description": "Underground storage tank (UST/LUST) and spill registry screener. Screen any US coordinate against the national EPA UST Finder plus NY, CA, TX and FL state registries — tank leaks, spills, and cleanup cases with case type, status, contaminant, and distance per hit, for Phase I ESA due diligence.",
7990
8272
  "categories": [
7991
8273
  "REAL_ESTATE",
@@ -8125,6 +8407,87 @@
8125
8407
  ]
8126
8408
  }
8127
8409
  },
8410
+ {
8411
+ "slug": "uflpa-entity-list-monitor",
8412
+ "actorId": "malonestar/uflpa-entity-list-monitor",
8413
+ "title": "UFLPA Entity List Screener & Delta Tracker — DHS",
8414
+ "description": "Screen suppliers against the official DHS UFLPA Entity List — the forced-labor import ban. Every barred entity by statutory sub-list with aliases, effective dates and source Federal Register notices, plus a delta mode that flags additions since your last run. Keyless and correctness-first.",
8415
+ "categories": [
8416
+ "BUSINESS",
8417
+ "DEVELOPER_TOOLS",
8418
+ "AGENTS"
8419
+ ],
8420
+ "storeUrl": "https://apify.com/malonestar/uflpa-entity-list-monitor",
8421
+ "pricing": {
8422
+ "model": "PAY_PER_EVENT",
8423
+ "event": "apify-default-dataset-item",
8424
+ "unit": "UFLPA screening result",
8425
+ "usdPerUnit": 0.012,
8426
+ "usdPer1000": 12,
8427
+ "tierDiscountsUsdPerUnit": {
8428
+ "FREE": 0.012,
8429
+ "BRONZE": 0.0096,
8430
+ "SILVER": 0.0084,
8431
+ "GOLD": 0.0066,
8432
+ "PLATINUM": 0.0048,
8433
+ "DIAMOND": 0.0036
8434
+ },
8435
+ "actorStartUsd": null,
8436
+ "since": "2026-09-01T18:03:13.909Z"
8437
+ },
8438
+ "inputSchema": {
8439
+ "type": "object",
8440
+ "properties": {
8441
+ "mode": {
8442
+ "type": "string",
8443
+ "description": "What to return. \"list\" = the full current DHS UFLPA Entity List, one row per entity-and-sub-list occurrence (name, aliases, statutory sub-list, effective date, originating Federal Register notice). \"search\" = filter the current list by a company-name query (matched against names AND aliases) and/or a statutory sub-list. \"delta\" = only entries new since your last run for the same scope, tracked in the named key-value store 'uflpa-entity-list-baseline'; the FIRST delta run stores a baseline and fails with an explanatory message rather than billing the whole list as new. Example: \"list\".",
8444
+ "enum": [
8445
+ "list",
8446
+ "search",
8447
+ "delta"
8448
+ ]
8449
+ },
8450
+ "queries": {
8451
+ "type": "array",
8452
+ "description": "BATCH form of \"query\": screen several counterparties in ONE run instead of running this Actor once per name. Each name is screened INDEPENDENTLY against the whole list; every emitted row carries query_matched saying which name produced it, and every screened name also gets one screen_summary row carrying its own matches count — so a supplier that matches NOTHING is still an explicit, auditable clear rather than an absent row. Case-insensitive substring, matched against each entity's name, its full listed name, AND every published alias / former name, so a counterparty hiding under an alias is still caught. Names are de-duplicated case-insensitively; a blank or non-string entry FAILS the run loudly rather than being silently skipped. Up to 100 names. Combines with sublist / addedSince / addedUntil, which apply to every name. Cost: one row per match plus one summary row per name, so maxResults must be at least the number of names. Example: [\"Hoshine\",\"Aksu\"].",
8453
+ "items": {
8454
+ "type": "string"
8455
+ }
8456
+ },
8457
+ "query": {
8458
+ "type": "string",
8459
+ "description": "Single company-name phrase to screen against the list, e.g. \"Hoshine\" or \"Aksu\". Case-insensitive substring, matched against each entity's name, its full listed name, AND every published alias / former name — so a counterparty hiding under an alias is still caught. Required for search mode (a sub-list, or a \"queries\" list, also satisfies it). To screen several names in one run use \"queries\" instead; supplying both simply unions them."
8460
+ },
8461
+ "sublist": {
8462
+ "type": "string",
8463
+ "description": "Optional filter to one UFLPA Section 2(d)(2)(B) sub-list: i (Xinjiang entities that mine/produce/manufacture with forced labor), ii (entities working with the Xinjiang government to recruit/transport/harbor forced labor), iv (exporters into the US), v (facilities/entities sourcing material from Xinjiang or forced-labor programs). Leave blank for all sub-lists. Note (iii)/(iv) currently carry no separate DHS table.",
8464
+ "enum": [
8465
+ "i",
8466
+ "ii",
8467
+ "iv",
8468
+ "v"
8469
+ ]
8470
+ },
8471
+ "addedSince": {
8472
+ "type": "string",
8473
+ "description": "Only include entries whose effective (added) date is on or after this date. STRICTLY YYYY-MM-DD (e.g. 2025-01-01) — slash dates, month names and compact dates are rejected with a loud failure because they cannot be applied unambiguously. Leave blank for no lower bound (the list began 2022-06-21)."
8474
+ },
8475
+ "addedUntil": {
8476
+ "type": "string",
8477
+ "description": "Only include entries whose effective (added) date is on or before this date. STRICTLY YYYY-MM-DD. Leave blank for no upper bound. An unusable value fails the run loudly; nothing is billed."
8478
+ },
8479
+ "maxResults": {
8480
+ "type": "integer",
8481
+ "description": "Hard cap on rows emitted AND billed this run. The whole current list is roughly 200 rows, so the default returns all of it; every row carries matched_total and results_truncated so a capped answer is never mistaken for a complete one. Example: 500.",
8482
+ "minimum": 1,
8483
+ "maximum": 2000
8484
+ }
8485
+ },
8486
+ "required": [
8487
+ "mode"
8488
+ ]
8489
+ }
8490
+ },
8128
8491
  {
8129
8492
  "slug": "usace-levee-flood-risk-screener",
8130
8493
  "actorId": "malonestar/usace-levee-flood-risk-screener",
@@ -8415,12 +8778,14 @@
8415
8778
  },
8416
8779
  "simulateOutage": {
8417
8780
  "type": "string",
8418
- "description": "Permanent diagnostic seam used to prove the failure path without waiting for a real outage. 'measurements' fails the water-level read, 'locations' fails the monitoring-location read, 'both' fails both, 'none' is the normal behaviour. With 'both' the run fails loudly and emits nothing. Example: \"none\".",
8781
+ "description": "Permanent diagnostic seam used to prove the failure path without waiting for a real outage. 'measurements' fails the water-level read, 'locations' fails the monitoring-location read, 'both' fails both, 'none' is the normal behaviour. With 'both' the run fails loudly and emits nothing. The two drift modes exercise the gate itself: 'drift_advisory_probe' forces the ADVISORY paging-exhaustion probe to fail, which must leave the run SUCCEEDING with the skip disclosed in drift_probes_unavailable, because that probe exercises the cursor at a page size production never uses; 'drift_load_bearing_probe' forces a load-bearing probe to fail, which must FAIL the run with zero rows and zero billing. Example: \"none\".",
8419
8782
  "enum": [
8420
8783
  "none",
8421
8784
  "measurements",
8422
8785
  "locations",
8423
- "both"
8786
+ "both",
8787
+ "drift_advisory_probe",
8788
+ "drift_load_bearing_probe"
8424
8789
  ]
8425
8790
  }
8426
8791
  },
@@ -8432,7 +8797,7 @@
8432
8797
  {
8433
8798
  "slug": "usgs-historical-topo-records-review",
8434
8799
  "actorId": "malonestar/usgs-historical-topo-records-review",
8435
- "title": "Historical Topographic Map Chronology - ASTM Phase I ESA 8.3.4",
8800
+ "title": "USGS Historical Topographic Map Chronology - ASTM Phase I ESA",
8436
8801
  "description": "Builds the full USGS historical topographic map chronology for any coordinate and runs an ASTM E1527-21 Sec. 8.3.4 historical records review: five-year interval coverage back to 1940, with data gaps explicitly identified. Every map year, scale, quadrangle and download URL. Keyless USGS data.",
8437
8802
  "categories": [
8438
8803
  "REAL_ESTATE",
@@ -8785,7 +9150,7 @@
8785
9150
  {
8786
9151
  "slug": "usmin-mine-feature-proximity-screener",
8787
9152
  "actorId": "malonestar/usmin-mine-feature-proximity-screener",
8788
- "title": "USMIN Mine Feature Proximity Screener",
9153
+ "title": "USGS USMIN Mine Feature Proximity Screener - Shafts & Tailings",
8789
9154
  "description": "Screens any US coordinate against USGS USMIN topographic mine symbols - adits, shafts, prospects, tailings, quarries - for Phase I ESA, geotechnical and land due diligence.",
8790
9155
  "categories": [
8791
9156
  "REAL_ESTATE",
@@ -8920,7 +9285,7 @@
8920
9285
  {
8921
9286
  "slug": "uswtdb-turbine-proximity-screener",
8922
9287
  "actorId": "malonestar/uswtdb-turbine-proximity-screener",
8923
- "title": "USWTDB Wind Turbine Proximity Screener — Nearest by Coordinate",
9288
+ "title": "USGS Wind Turbine Database (USWTDB) Proximity Screener by Site",
8924
9289
  "description": "Wind turbine proximity by coordinate from the US Wind Turbine Database (USWTDB): nearest wind turbine distance, count within a radius, tallest turbine, and total nearby capacity (MW) for each lat/lon. Keyless USGS/LBNL data for aviation, radar, setback and repowering screening.",
8925
9290
  "categories": [
8926
9291
  "REAL_ESTATE",
@@ -8981,7 +9346,7 @@
8981
9346
  "slug": "warn-layoff-aggregator",
8982
9347
  "actorId": "malonestar/warn-layoff-aggregator",
8983
9348
  "title": "US WARN Layoff Notice Aggregator & Delta Monitor (OR/TX API)",
8984
- "description": "Aggregate US state WARN Act layoff & closure notices into one normalized schema and track new / updated / removed deltas. Oregon & Texas live (keyless Socrata); CA/NY/WA/WI/IL/NJ scaffolded. For RevOps, recruiting, econ research and CRE. No API key.",
9349
+ "description": "Aggregate US state WARN Act layoff & closure notices into one normalized schema and track new / updated / removed deltas. Oregon (HECC export) and Texas (Socrata) live and keyless; CA/NY/WA/WI/IL/NJ scaffolded. For RevOps, recruiting, econ research and CRE. No API key.",
8985
9350
  "categories": [
8986
9351
  "LEAD_GENERATION",
8987
9352
  "DEVELOPER_TOOLS",
@@ -9010,7 +9375,7 @@
9010
9375
  "properties": {
9011
9376
  "states": {
9012
9377
  "type": "array",
9013
- "description": "Two-letter state codes to pull WARN notices for. Leave empty for all fully-wired sources (currently OR and TX). CA, NY, WA, WI, IL and NJ have config blocks but no machine-readable endpoint yet -- requesting only those FAILS the run loudly rather than returning zero rows. Example: [\"OR\",\"TX\"]. Applied by default if omitted: [].",
9378
+ "description": "Two-letter state codes to pull WARN notices for. Leave empty for all fully-wired sources (currently OR and TX). Texas is a keyless Socrata API; Oregon is the keyless HECC Rapid Response xlsx export, which replaced the retired Socrata dataset ijbz-jpx8 in September 2026. CA, NY, WA, WI, IL and NJ have config blocks but no machine-readable endpoint yet -- requesting only those FAILS the run loudly rather than returning zero rows. Example: [\"OR\",\"TX\"]. Applied by default if omitted: [].",
9014
9379
  "items": {
9015
9380
  "type": "string"
9016
9381
  }
@@ -9025,7 +9390,7 @@
9025
9390
  },
9026
9391
  "sinceDate": {
9027
9392
  "type": "string",
9028
- "description": "Optional lower bound on the notice date. When set, only notices on or after this date are fetched. MUST be YYYY-MM-DD (e.g. 2026-01-15); 2026-1-1 is accepted and zero-padded. Any other format FAILS the run before anything is fetched and bills nothing, rather than being spliced unverified into the live Socrata query - measured, 01/15/2026 and Jan 2026 both return HTTP 400 query.soql.type-mismatch from Socrata mid-fetch. Slash forms are rejected on purpose: 05/06/2026 is ambiguous between US and EU order. A bare year (2026) is rejected too, even though Socrata happens to coerce it to Jan 1. Leave blank for all available notices."
9393
+ "description": "Optional lower bound on the notice date. When set, only notices on or after this date are fetched. MUST be YYYY-MM-DD (e.g. 2026-01-15); 2026-1-1 is accepted and zero-padded. Any other format FAILS the run before anything is fetched and bills nothing, rather than being spliced unverified into the live Texas Socrata query - measured, 01/15/2026 and Jan 2026 both return HTTP 400 query.soql.type-mismatch from Socrata mid-fetch. For Oregon the bound is applied by this actor after the fetch, because the HECC export offers no date predicate; the result is the same either way. Slash forms are rejected on purpose: 05/06/2026 is ambiguous between US and EU order. A bare year (2026) is rejected too, even though Socrata happens to coerce it to Jan 1. Leave blank for all available notices."
9029
9394
  },
9030
9395
  "priorItems": {
9031
9396
  "type": "array",
@@ -9123,7 +9488,7 @@
9123
9488
  {
9124
9489
  "slug": "wild-scenic-river-proximity-screener",
9125
9490
  "actorId": "malonestar/wild-scenic-river-proximity-screener",
9126
- "title": "Wild & Scenic River Proximity Screener - Section 7 Flag",
9491
+ "title": "USFS Wild & Scenic River Proximity Screener - WSR Act Section 7",
9127
9492
  "description": "Wild & Scenic River proximity API: per lat/lon site, nearest designated Wild & Scenic River corridor - name, classification (Wild/Scenic/Recreational), managing agency and distance - plus a WSR Act Section 7 free-flow flag. USFS open data. For hydro, dredge, NEPA and land due-diligence.",
9128
9493
  "categories": [
9129
9494
  "AGENTS",
@@ -9183,7 +9548,7 @@
9183
9548
  {
9184
9549
  "slug": "wildfire-asset-exposure-screener",
9185
9550
  "actorId": "malonestar/wildfire-asset-exposure-screener",
9186
- "title": "Wildfire Asset Exposure Screener — Live Perimeter Distance",
9551
+ "title": "NIFC Wildfire Asset Exposure Screener - Live Perimeter Distance",
9187
9552
  "description": "Screen assets - offices, homes, facilities, portfolios - against live NIFC wildfire perimeters plus USFS Wildfire Hazard Potential class and historical burn history. Per point: distance to nearest fire, hazard class, past burn year. MCP-ready wildfire risk API.",
9188
9553
  "categories": [
9189
9554
  "AGENTS",