{
  "openapi": "3.0.1",
  "info": {
    "title": "Nonprofit & IRS 990 Lookup API — EIN, Financials, NTEE",
    "description": "Search US nonprofits by name, state, NTEE or 501(c) code, or look up EINs, and get IRS Form 990 financials — revenue, expenses, assets, net assets, officer pay totals — with a multi-year history and decoded IRS codes. No API key. From $0.80 per 1,000 organizations.",
    "version": "0.1",
    "x-build-id": "zbwBj2okQtP97nOad"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/insight.solutions~nonprofit-990-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-insight.solutions-nonprofit-990-api",
        "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/insight.solutions~nonprofit-990-api/runs": {
      "post": {
        "operationId": "runs-sync-insight.solutions-nonprofit-990-api",
        "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/insight.solutions~nonprofit-990-api/run-sync": {
      "post": {
        "operationId": "run-sync-insight.solutions-nonprofit-990-api",
        "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": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Organisation names or keywords to search, one per line — `food bank`, `housing`, `American Red Cross`. Each is one search, combined with every state, NTEE category and subsection code you set below. Duplicates (ignoring case) are searched once. Leave empty to browse by the filters alone, or to look up EINs only.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "eins": {
            "title": "EINs to look up",
            "type": "array",
            "description": "Employer Identification Numbers to fetch directly, one per line. `53-0196605`, `530196605` and ` 53 0196605 ` all work; eight digits are left-padded with a zero (an EIN can start with 0). Anything that is not 8–9 digits comes back as a free `invalid-ein` row and is never requested. An EIN lookup always fetches the full 990 financials.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "US states or territories to filter searches by — two-letter codes (`CA`, `NY`, `DC`, `PR`) or full names. One search per query × state. With no query, one browse per state.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "nteeCategories": {
            "title": "NTEE categories",
            "type": "array",
            "description": "ProPublica's ten NTEE major categories, as numbers, e.g. `[5, 7]`: 1 Arts, Culture & Humanities · 2 Education · 3 Environment and Animals · 4 Health · 5 Human Services · 6 International, Foreign Affairs · 7 Public, Societal Benefit · 8 Religion Related · 9 Mutual/Membership Benefit · 10 Unknown, Unclassified. One search per value (× queries × states).",
            "default": []
          },
          "subsectionCodes": {
            "title": "501(c) subsection codes",
            "type": "array",
            "description": "IRS 501(c) subsections, as numbers, e.g. `[3]`: 3 = 501(c)(3) public charities and private foundations, 4 = social welfare, 5 = labor and agricultural, 6 = business leagues, 7 = social clubs, 8 = fraternal societies, 19 = veterans' organisations. One search per value.",
            "default": []
          },
          "maxResults": {
            "title": "Max results per search",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on organisations taken from each search combination (query × state × NTEE × subsection). Results come 25 to a page. 0 means every result the API will page to, bounded by the time budget.",
            "default": 100
          },
          "includeFinancials": {
            "title": "Fetch 990 financials",
            "type": "boolean",
            "description": "Fetch each search result's full record: the IRS Business Master File entry, the latest 990's revenue, expenses, assets and liabilities, and a multi-year history. One extra request per organisation, billed as an `organization` row. Turn off for identity-only `listing` rows (name, EIN, city, state, NTEE, subsection) at a quarter of the price.",
            "default": true
          },
          "yearsOfHistory": {
            "title": "Years of history",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many of the most recent filing years go into each organisation's `financialHistory` (and into `filing` rows, when those are on). Years with only a PDF on file are included with their link and null numbers.",
            "default": 5
          },
          "filingRows": {
            "title": "Add one row per filing year",
            "type": "boolean",
            "description": "Also return one `filing` row per filing year with data (within `yearsOfHistory`), carrying that year's headline numbers and the complete IRS extract — all 68 fields for a Form 990. Billed per row at the listing price.",
            "default": false
          },
          "minRevenue": {
            "title": "Minimum total revenue (USD)",
            "type": "integer",
            "description": "Keep only organisations whose latest 990 reports at least this total revenue (the Business Master File figure when no 990 has data). Organisations outside the band are never written and never charged. Turns `includeFinancials` on."
          },
          "maxRevenue": {
            "title": "Maximum total revenue (USD)",
            "type": "integer",
            "description": "Keep only organisations whose latest total revenue is at most this. Same rules as the minimum."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many requests run at once. Each slot has its own proxy session and waits at least 250 ms between its own requests.",
            "default": 4
          },
          "maxRunSecs": {
            "title": "Time budget (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Stop fetching after this many seconds and keep everything already returned. Searches may use at most 60% of it when financials still have to be fetched.",
            "default": 240
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The API answered from Apify's datacenter proxy and from no proxy at all in testing, so the cheap datacenter pool is the default and a cleared field still works.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}