{
  "openapi": "3.0.1",
  "info": {
    "title": "Nonprofit Formation Radar: New 501(c)(3) Prospect Alerts",
    "description": "Watch state(s), IRS subsection (default 501(c)(3)) and NTEE mission codes; each monthly run diffs the IRS EO Business Master File and delivers newly-recognized organizations as deduped prospect rows (EIN, name, mailing address, mission, ruling month). Address-only; report mode for cohorts.",
    "version": "0.0",
    "x-build-id": "xW4KZb9Quze3kzrBh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yungstentech~nonprofit-formation-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yungstentech-nonprofit-formation-radar",
        "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/yungstentech~nonprofit-formation-radar/runs": {
      "post": {
        "operationId": "runs-sync-yungstentech-nonprofit-formation-radar",
        "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/yungstentech~nonprofit-formation-radar/run-sync": {
      "post": {
        "operationId": "run-sync-yungstentech-nonprofit-formation-radar",
        "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": "Mode",
            "enum": [
              "watch",
              "unwatch",
              "list-events",
              "report"
            ],
            "type": "string",
            "description": "What this run does. watch: establish (first run) or advance a standing filter-watch and deliver newly-recognized organizations. unwatch: forget a saved filter's memory. list-events: replay this filter's prospect history. report: one-off new-determination cohort for a state/subsection/NTEE/period (billed once, $15).",
            "default": "watch"
          },
          "states": {
            "title": "States",
            "maxItems": 10,
            "type": "array",
            "description": "US states/territories to watch, as 2-letter USPS codes matched against the IRS STATE column. At least one is required for a watch; report may be broad (leave empty for all states). Up to 10.",
            "items": {
              "type": "string",
              "enum": [
                "AL",
                "AK",
                "AZ",
                "AR",
                "CA",
                "CO",
                "CT",
                "DE",
                "DC",
                "FL",
                "GA",
                "HI",
                "ID",
                "IL",
                "IN",
                "IA",
                "KS",
                "KY",
                "LA",
                "ME",
                "MD",
                "MA",
                "MI",
                "MN",
                "MS",
                "MO",
                "MT",
                "NE",
                "NV",
                "NH",
                "NJ",
                "NM",
                "NY",
                "NC",
                "ND",
                "OH",
                "OK",
                "OR",
                "PA",
                "RI",
                "SC",
                "SD",
                "TN",
                "TX",
                "UT",
                "VT",
                "VA",
                "WA",
                "WV",
                "WI",
                "WY",
                "PR",
                "GU",
                "VI",
                "AS",
                "MP"
              ],
              "enumTitles": [
                "Alabama",
                "Alaska",
                "Arizona",
                "Arkansas",
                "California",
                "Colorado",
                "Connecticut",
                "Delaware",
                "District of Columbia",
                "Florida",
                "Georgia",
                "Hawaii",
                "Idaho",
                "Illinois",
                "Indiana",
                "Iowa",
                "Kansas",
                "Kentucky",
                "Louisiana",
                "Maine",
                "Maryland",
                "Massachusetts",
                "Michigan",
                "Minnesota",
                "Mississippi",
                "Missouri",
                "Montana",
                "Nebraska",
                "Nevada",
                "New Hampshire",
                "New Jersey",
                "New Mexico",
                "New York",
                "North Carolina",
                "North Dakota",
                "Ohio",
                "Oklahoma",
                "Oregon",
                "Pennsylvania",
                "Rhode Island",
                "South Carolina",
                "South Dakota",
                "Tennessee",
                "Texas",
                "Utah",
                "Vermont",
                "Virginia",
                "Washington",
                "West Virginia",
                "Wisconsin",
                "Wyoming",
                "Puerto Rico",
                "Guam",
                "U.S. Virgin Islands",
                "American Samoa",
                "Northern Mariana Islands"
              ]
            }
          },
          "subsection": {
            "title": "IRS subsection",
            "enum": [
              "03",
              "04",
              "06",
              "19",
              "all"
            ],
            "type": "string",
            "description": "Which 501(c) subsection to watch, matched against the IRS SUBSECTION column. The default and primary use case is 501(c)(3). Choose 'all' to watch every subsection.",
            "default": "03"
          },
          "nteeCodes": {
            "title": "NTEE mission codes (optional)",
            "type": "array",
            "description": "NTEE prefixes matched against the IRS NTEE_CD column. A single letter like P (Human Services) or E (Health Care) matches the whole major group; a longer prefix like B82 narrows further. Leave empty to watch all missions.",
            "items": {
              "type": "string"
            }
          },
          "maxAlertRowsPerMonth": {
            "title": "Max prospects per month",
            "minimum": 500,
            "maximum": 100000,
            "type": "integer",
            "description": "Per-account monthly ceiling on delivered prospects. Past it the run withholds the rest and delivers an uncharged notice instead, so a broad all-mission state filter cannot surprise-bill you. Withheld prospects redeliver next month.",
            "default": 1000
          },
          "maxMonthlySpendUsd": {
            "title": "Max monthly volume spend (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "A money cap on cumulative volume-tier ($0.02) charges per filter-month. Whichever monthly cap trips first (this or Max prospects per month) stops charging. Does not include the $9 watch fee.",
            "default": 40
          },
          "maxAlertsPerRun": {
            "title": "Max prospects per run",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on prospects delivered in a single run. Any overflow is not marked seen and redelivers on the next run, with a truncation notice naming how many were withheld. Bounds a long-gap catch-up run.",
            "default": 1000
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "Optional https URL that receives a POST with the new prospects after each run. Best-effort alerting only: the dataset is the durable record. If you need to verify the caller, put a secret token in the URL yourself."
          },
          "filterName": {
            "title": "Filter name",
            "type": "string",
            "description": "Names this filter within your account so its deduplication memory persists across scheduled runs. Lowercased, letters/digits/hyphens only (1 to 40 characters). Widening a saved filter under the same name re-baselines it (no back-catalog charge).",
            "default": "default"
          },
          "period": {
            "title": "Report period (report mode)",
            "type": "string",
            "description": "Report mode only. The RULING (determination) month window for the cohort, as YYYY-MM (a single month) or YYYY-MM..YYYY-MM (an inclusive range), for example 2026-04..2026-06."
          },
          "dryRun": {
            "title": "Dry run (preview, no PPE charge)",
            "type": "boolean",
            "description": "When true, stream, filter and diff but return at most 5 preview rows. It charges no PPE event and writes no saved filter, billing or event-history state, but the preview rows are still written to your dataset/OUTPUT. Use it to sanity check your filter before scheduling. A dry run still downloads and streams the full extract (about 343 MB, 327 MiB; measured at 342,745,263 bytes), so ordinary Apify platform compute, storage and egress usage still applies.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}