Early access: New content posts daily — updates are frequent and you may notice work in progress.
OSINTBench
Guides irs-form-990-intelligence-guide

irs-form-990-intelligence-guide

IRS Form 990 filings are one of the richest public sources for investigating US nonprofits, foundations, and their cross-border relationships. For OSINT investigators, they expose governance, compensation, grants, related-party transactions, and structural links that rarely appear as clearly in a single public record.

intermediate Updated 2026-04-05

IRS Form 990 Intelligence: What Nonprofit Filings Reveal for OSINT

The IRS Form 990 is underused. It is a public record that nonprofits file with the IRS. Most investigators reviewing these forms confirm tax-exempt status, note the address, and move on. This is a missed opportunity.

A Form 990 can provide valuable information, including board members, executive pay, related-party transactions, overseas spending, grant recipients, and links between seemingly separate groups.

These records offer significant insights for sanctions research, influence mapping, and financial due diligence. The forms are standardized, federal filings, machine-readable, and available in bulk. You can use them to map a nonprofit's inner workings: who's in charge, who gets paid, who gets funded, and how money flows through the network.

Start here.

What a 990 Is and Why OSINT Investigators Care

The Form 990 series is the annual federal report for most US tax-exempt nonprofits. Public by design. Different organizations file different versions; size and type matter.

The full Form 990 is best for OSINT. Larger public charities file it, disclosing mission, leadership, compensation, major contractors, grants, governance policies. Detailed schedules on related entities and special activities are included.

Form 990-EZ is the short version; smaller organizations use it. It includes information on officers, directors, revenue, expenses, and some organizational structure. The intelligence value is lower but not zero.

Form 990-PF is for private foundations. Investigators care about these grantmaking vehicles, family offices, and pass-through structures. They provide information on trustees, officers, contributors, grant recipients, and investment patterns. Money and influence flow are revealed.

These filings reveal more than websites and state registries. A nonprofit's homepage may spin a mission, but the 990 lists insiders, compensation, foreign grants, and related transactions. The 990s answer questions like: Who's really running things? How's the money moving? What's the real scope?

You get names, numbers, and patterns. You can compare years and find anomalies. The OSINT value lies in this analysis, providing X, Y, Z.

  • Who really runs this organization?
  • Which other nonprofits share the same board members?
  • Are insiders leasing property to the nonprofit or receiving loans from it?
  • Is the organization acting as a funding intermediary?
  • Which countries, foreign entities, or overseas programs appear in its disclosures?

Where to Find and Download 990 Data

The easiest starting point is ProPublica Nonprofit Explorer. It is fast and has a web interface. You can search by organization name or EIN. You can get filing history quickly.

ProPublica allows you to search by name. You can view filing years. You can access data or linked forms. There is no IRS directory hassle.

For more nonprofit profile detail, try Candid, formerly GuideStar. A free tier confirms identities and basic data. Paid tiers add depth and workflow features for repeat diligence.

Investigators use ProPublica for speed. They use Candid for cross-checking. This gives you context.

For programmatic analysis, go to the IRS bulk XML dataset on AWS. This dataset is for data analysis, not document reading.

The XML releases let you search filings by officer name, address, vendor, or foreign-grant pattern. If you are building a workflow, this dataset is important.

You can pull XML index files by year. You can query fields like EIN, tax year, filer, officers, pay, and grants. Simple scripts can produce useful data, including officer names, addresses, vendors, foreign-grant patterns.

becomes

The easiest starting point is ProPublica Nonprofit Explorer. It is fast and has a web interface. You can search by organization name or EIN. You can get filing history quickly.

ProPublica allows you to search by name. You can view filing years. You can access data or linked forms. There is no IRS directory hassle.

For more nonprofit profile detail, try Candid, formerly GuideStar. A free tier confirms identities and basic data. Paid tiers add depth and workflow features for repeat diligence.

Investigators use ProPublica for speed. They use Candid for cross-checking. This gives you context.

For programmatic analysis, go to the IRS bulk XML dataset on AWS. This dataset is for data analysis, not document reading.

The XML releases let you search filings by officer name, address, vendor, or foreign-grant pattern. If you are building a workflow, this dataset is important.

You can pull XML index files by year. You can query fields like EIN, tax year, filer, officers, pay, and grants. Simple scripts produce useful data: officer names, addresses, vendors, foreign-grant patterns.

  • all filings containing a target director surname
  • all organizations sharing a mailing address
  • all grants to entities in a given country
  • all Schedule L disclosures above a threshold
  • all 990-PF filings where the same trustee appears across multiple foundations

Don't overlook direct document hunting. A simple Google operator like site:irs.gov "EIN" surfaces filing PDFs or IRS-hosted records fast. Exact EIN searches usually beat name-only queries, especially when third-party indexes are sparse or an organization uses unusual naming conventions.

Reading a 990 for Intelligence

Humanize the article (removing em-dashes and phrases as specified, etc):

A 990 is only as useful as your ability to focus on the sections that actually generate investigative value.

Start with Part VII. Officers, directors, trustees, key employees, and highest compensated staff are listed here. You get names, titles, and pay. That's OSINT gold: identities confirmed, hierarchy established, and outliers flagged. When you find the same person across multiple orgs, you're building a board interlock map.

Next up is Schedule L. This is where red flags often pop up. Loans, grants, and business deals between the nonprofit and insiders are all listed. Rent paid to a board member's company. Funds lent to a related party. Schedule L may spill the details.

Don't skip Schedule O. Investigators do, but they shouldn't. Schedule O contains explanations that are more revealing than the checkbox answers. Governance changes, compensation methods, affiliate structures may be disclosed here. If the org is trying to hide something, it might end up here.

For cross-border work, Schedule F is a must-read. Foreign activities, grants, and expenses are all detailed here. Tracing international partnerships or foreign grants. Schedule F has the data. It's a powerful section for digging deep.

That's it.

Board Interlock Analysis

Board Interlocks

Board interlocks are a strong reason to analyze 990s at scale. A single director name on one filing is just a data point. The same name on multiple filings reveals a network. Extract director and officer names from a 990, then search those names across other 990s, state corporate records, and open corporate databases. Doing this systematically maps governance structures between charities, foundations, and service providers.

This matters. Pass-through structures often use interlocking boards. Two foundations may seem independent but share trustees, addresses, or legal counsel. That doesn't prove wrongdoing; it shows where influence and decision-making concentrate. In investigations, this pattern surfaces.

Automation

OpenCorporates helps connect nonprofits to broader corporate footprints. Custom scripts against IRS bulk data offer more. A basic pipeline normalizes names, titles, and EINs; identifies repeated directors, recurring signatories, or clusters of organizations linked by governance; and does not just match exact names. It resolves likely variants and validates with addresses, titles, and filing chronology. You get a picture. You find connections. You assess influence.

Worked Example: Tracing a Pass-Through Structure

A Realistic Scenario

Foundation A, a US private foundation, gives a grant to Foundation B, another US nonprofit. Foundation B then operates in a foreign country and gives grants or assistance to a foreign entity. The question is: Is Foundation A indirectly funding that foreign recipient?

The Private Foundation's Dilemma

There are potential issues. The US Treasury Department's Office of Foreign Assets Control (OFAC) enforces economic and trade sanctions, targeting specific countries and regimes. Transactions involving sanctioned parties can lead to penalties.

The IRS requires private foundations to report grants and other assistance, identifying foreign recipients and activities. The Form 990-PF asks about foreign grants and activities, including foreign grants, activities, and recipients.

The Intermediary Concern

If Foundation A gives to Foundation B, and Foundation B then gives to a foreign entity, Foundation A might be considered an indirect funder. The IRS and Treasury watch for sanctions evasion, scrutinizing transactions involving foreign entities.

Private foundations must assess their grantmaking and evaluate the risk of indirect funding. Due diligence is key.

Steps to Minimize Risk

Foundation A should research Foundation B's foreign activities. They should check OFAC's lists to assess sanctions risk. They should ensure grants are for legitimate purposes and monitor grant terms. They should file Form 990-PF correctly.

By taking these steps, Foundation A can minimize risks, protecting their funds and reputation.

Conclusion

Private foundations must be cautious and evaluate their grantmaking processes. Understanding indirect funding risks helps them comply with regulations.

Here is how the filing trail works.

Foundation A’s 990-PF lists grants and contributions. You spot Foundation B as a recipient, with grant amount and purpose. That’s the first layer: A funds B.

Pull Foundation B’s Form 990. Check the core filing and schedules for foreign activities. Does Schedule F list grants, assistance, or program service spending abroad? That’s the second layer: B moves money or resources overseas.

Check Part VII for board overlap. A trustee of A also serves on B’s board, or as director, officer, or key employee? That’s more than a transaction; it’s coordinated governance.

Review Schedule L. Are insiders connected to A or B in transactions, leases, loans, or business arrangements? This adds structural insight. Schedule O explains affiliated organizations, fiscal sponsorship, grant restrictions, or foreign partners.

To find the beneficiary, focus on Schedule F. Combine it with grant descriptions, country listings, and named foreign organizations. Some filings only show country-level spending. Correlate Schedule F details, Schedule O narratives, prior or later year filings, foreign entity’s web presence or registry records, and public grant announcements.

Document the structure. Identify entity controllers. Note disclosed fields supporting each step. Verify the chain.

AI Tools for 990 Analysis

Frontmatter and MDX comment blocks remain unchanged. Tables, code blocks, inline code, and links are preserved.

AI cuts 990 analysis time dramatically, especially with XML exports. Claude or GPT summarize officer lists. Extract compensation tables. Flag repeated names. Convert dense sections into notes. This is a fast first pass when triaging many filings.

Good prompts matter. Ask for specifics: List officers, directors, trustees with titles and pay. Identify Schedule L transactions. Summarize parties. Extract Schedule F info: foreign countries, grant descriptions, expenses. Flag unusual compensation. Note Schedule O references to affiliates, governance changes, unusual disclosures.

AI spots anomalies. Feed it years of XML for the same org. It finds new foreign activity, sudden pay jumps, directors who disappear, changes in grant destinations.

But AI has limits. It misreads messy forms. Specifics like dollar figures, names, and labels get wrong. Treat AI output as a draft. Verify key claims against the source PDF or XML.

For OSINT, the balance is to use AI to save time, not to replace validation. The filing is evidence. AI gets you to interesting parts faster.

Used well, IRS Form 990 is a public intelligence record, not just a tax document.

Last updated 2026-04-05. Techniques and tools change — verify current capabilities with vendors directly.