# GI Bill Comparison Tool API: VA Schools, Tuition & Benefits (`clearpathdata/gi-bill-institutions`) Actor

Search VA GI Bill Comparison Tool institutions by name, city, state or ZIP. Get facility codes, tuition, BAH, Yellow Ribbon, accreditation, caution flags and ratings. $2 per 1,000.

- **URL**: https://apify.com/clearpathdata/gi-bill-institutions.md
- **Developed by:** [Six Figure Salute](https://apify.com/clearpathdata) (community)
- **Categories:** Developer tools, AI, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 institution / program records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## GI Bill Comparison Tool API: VA Schools, Tuition & Benefits

Search VA GI Bill Comparison Tool institutions by name, city, state or ZIP. Get facility codes, tuition, BAH, Yellow Ribbon, accreditation, caution flags and ratings. $2 per 1,000.

### What does it do?

**GI Bill Institutions** wraps the official **VA GI Bill Comparison Tool API** (`api.va.gov/v0/gi`) so you can search approved schools and employers, look up facility codes, and optionally pull approved programs. You get clean, flat records with tuition, monthly housing allowance (BAH), Yellow Ribbon, accreditation, caution flags and veteran ratings when present.

- ✅ Official public VA data: no login, no cookies, no proxies
- ✅ Search by name, city, state, ZIP, type or facility code
- ✅ Optional program search (nursing, welding, etc.)
- ✅ Clean JSON / CSV / Excel output for Sheets, BI tools or AI agents
- ✅ Pay only for results: no monthly rental

### Use cases

- **Veteran education counseling:** shortlist schools by state with tuition, BAH and Yellow Ribbon.
- **Edtech & benefits platforms:** enrich institution records with official VA facility codes and flags.
- **Research & journalism:** pull caution flags, accreditation and outcome fields at scale.
- **Employer / OJT discovery:** find approved apprenticeships and on-the-job training programs.

### How to use it

1. Click **Try for free**. The input is prefilled with a working Colorado example.
2. Edit the input and click **Start**.
3. Download results as JSON, CSV, Excel or HTML, or pull them via API.

### Input examples

**Schools named "University of Colorado" in Denver, CO**

```json
{
  "name": "University of Colorado",
  "city": "Denver",
  "state": "CO",
  "maxResults": 5,
  "enrichProfiles": true
}
```

**Look up facility codes**

```json
{
  "facilityCodes": ["11802506", "11903106"]
}
```

**Approved nursing programs in Colorado**

```json
{
  "programName": "nursing",
  "state": "CO",
  "maxResults": 20
}
```

### Output

Sample fields:

| name | facilityCode | institutionType | city | state | tuitionInState | bah | yellowRibbon | accredited | cautionFlag |
|---|---|---|---|---|---|---|---|---|---|
| UNIVERSITY OF COLORADO DENVER | 11802506 | PUBLIC | DENVER | CO | 10017 | 2967 | true | true | false |

Sample JSON record (long fields shortened):

```json
{
  "query": "name=University of Colorado city=Denver state=CO",
  "found": true,
  "name": "UNIVERSITY OF COLORADO DENVER",
  "facilityCode": "11802506",
  "institutionType": "PUBLIC",
  "city": "DENVER",
  "state": "CO",
  "zip": "80217",
  "tuitionInState": 10017,
  "tuitionOutOfState": 28209,
  "bah": 2967.0,
  "dodBah": 2841,
  "accredited": true,
  "accreditationType": "regional",
  "yellowRibbon": true,
  "yellowRibbonProgramCount": 18,
  "principlesOfExcellence": true,
  "eightKeys": true,
  "cautionFlag": false,
  "cautionFlags": [],
  "ratingAverage": null,
  "ratingCount": 0,
  "comparisonToolUrl": "https://www.va.gov/education/gi-bill-comparison-tool/institution/11802506",
  "source": "VA GI Bill Comparison Tool API (api.va.gov/v0/gi)"
}
```

### Pricing

Pay per event: **$0.002 per institution/program record** ($2.00 per 1,000). No start fee, no monthly rental. Not-found and error rows are free.

| Results | Cost |
|---|---|
| 100 records | $0.20 |
| 1,000 records | $2.00 |
| 10,000 records | $20.00 |

Apify's free plan includes monthly platform credit, so you can try it at no cost.

### Integrations

- **Google Sheets:** Apify's Google Sheets integration, or `=IMPORTDATA()` on the dataset CSV link.
- **Zapier & Make:** official Apify apps.
- **Webhooks & schedules:** run daily/hourly and post results anywhere.
- **AI agents (MCP):** available through the Apify MCP server.
- **API & SDKs:**

```bash
curl -X POST 'https://api.apify.com/v2/acts/clearpathdata~gi-bill-institutions/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"name":"University of Colorado","state":"CO","maxResults":5}'
```

### FAQ

**Is this official VA data?**

Yes. It calls the public GI Bill Comparison Tool API that powers [VA.gov's Comparison Tool](https://www.va.gov/education/gi-bill-comparison-tool/).

**Does city / ZIP always work?**

The VA search endpoint treats `name` as free text (school name, city or ZIP). Dedicated city/ZIP query params are unreliable, so this Actor uses `name` for those lookups and applies an extra client-side city/ZIP filter when you combine them with an institution name.

**Rate limits?**

The public API does not publish a hard quota. The Actor pages results (10 per request) with a short polite delay between calls.

**Something not working?**

Open an issue on the Actor's Issues tab.

### More details

##### Output fields

name, facilityCode, alias, institutionType, city/state/zip/country, address, physical address, highestDegree, localeType, studentCount, tuitionInState/OutOfState, books, bah, dodBah, accredited, accreditationType/Status, yellowRibbon + yellowRibbonPrograms\[], principlesOfExcellence, eightKeys, studentVeteran, stemOffered, independentStudy, priorityEnrollment, onlineOnly, distanceLearning, vetTecProvider, preferredProvider, campusType, parentFacilityCode, schoolClosing, cautionFlag(s), ratingAverage/Count, minority-serving flags, ownershipName, OPE IDs, programTypes, selected outcome fields, complaints summary, VetSuccess contact, website, College Scorecard link, Comparison Tool URL.

Program rows add: programDescription, programType, institutionName, bah/dodBah, preferredProvider, cautionFlags.

##### Source and terms

Live from the U.S. Department of Veterans Affairs public GI Bill Comparison Tool API (`api.va.gov/v0/gi`, backed by the GI Bill Data Service). `api.va.gov/robots.txt` allows access. This is U.S. government public data. Not affiliated with or endorsed by the Department of Veterans Affairs. Benefit eligibility still depends on each veteran's entitlement; always confirm on VA.gov.

##### Pricing

Pay per event: **institution**. Charged per institution or program record returned. Not-found/error rows are free. Apify platform usage is included.

##### Example input

```json
{
  "name": "University of Colorado",
  "city": "Denver",
  "state": "CO",
  "facilityCodes": ["11802506"],
  "maxResults": 5,
  "enrichProfiles": true
}
```

Built by clearpathdata, a maker of official-government-data Actors. Questions and feature requests are welcome in the Issues tab.

# Actor input Schema

## `name` (type: `string`):

Free-text search across school or employer names (also matches city names and ZIP codes in the VA index).

## `city` (type: `string`):

City filter. Used as the search term when name is empty; otherwise applied as a client-side filter on results.

## `state` (type: `string`):

2-letter US state / territory code (e.g. CO, TX, DC).

## `zip` (type: `string`):

5-digit ZIP. Used as the search term when name is empty; otherwise applied as a client-side filter.

## `type` (type: `string`):

VA institution type filter.

## `category` (type: `string`):

Broad category filter.

## `facilityCodes` (type: `array`):

VA facility codes to look up directly (profile endpoint). Example: 11802506 for University of Colorado Denver.

## `programName` (type: `string`):

Also search approved programs (e.g. nursing, welding). Returns program rows in addition to institutions.

## `enrichProfiles` (type: `boolean`):

For search hits, fetch the institution profile (accreditation, Yellow Ribbon program details, complaints, outcomes). Recommended. Facility-code lookups always use the profile.

## `maxResults` (type: `integer`):

Cap on institution or program rows returned for searches (facility-code lookups are always returned).

## Actor input object example

```json
{
  "name": "University of Colorado",
  "city": "Denver",
  "state": "CO",
  "facilityCodes": [
    "11802506"
  ],
  "enrichProfiles": true,
  "maxResults": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "name": "University of Colorado",
    "city": "Denver",
    "state": "CO",
    "facilityCodes": [
        "11802506"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpathdata/gi-bill-institutions").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "name": "University of Colorado",
    "city": "Denver",
    "state": "CO",
    "facilityCodes": ["11802506"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpathdata/gi-bill-institutions").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "name": "University of Colorado",
  "city": "Denver",
  "state": "CO",
  "facilityCodes": [
    "11802506"
  ],
  "maxResults": 10
}' |
apify call clearpathdata/gi-bill-institutions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpathdata/gi-bill-institutions"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rLtw31eVOOOgIXjAy/builds/BVzrtBBqMdFVrIKnL/openapi.json
