# Scholarship Finder Scraper — 23,000+ US Scholarships, 23 Fields (`commanding_hotdog/scholarship-finder-scraper`) Actor

Find 23,000+ US scholarships — awards, deadlines, eligibility, amounts. 23 fields. Keyword search, sort by award/deadline. Education financial aid research.

- **URL**: https://apify.com/commanding\_hotdog/scholarship-finder-scraper.md
- **Developed by:** [qingwa](https://apify.com/commanding_hotdog) (community)
- **Categories:** Education, Lead generation
- **Stats:** 10 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Scholarship Finder Scraper

Extract comprehensive US scholarship data from CollegeScholarships.org — **23,000+ scholarships** with **20+ fields** per record.

### Features

- 🎓 **23,000+ scholarships** from CollegeScholarships.org
- 📊 **20+ fields** per scholarship (award min/max, deadline, eligibility, sponsor, etc.)
- 🔍 **Keyword search** — filter by title, description, or major
- 💰 **Award sorting** — sort by highest/lowest award or deadline
- 🏷️ **Min award filter** — only scholarships above a threshold
- 📄 **Detail page enrichment** — visit each scholarship's page for full data
- 🚀 **Fast & reliable** — static HTML, no JavaScript rendering needed

### Output Fields

| Field | Description | Source |
|---|---|---|
| `title` | Scholarship name | Listing |
| `detail_url` | Full URL to scholarship page | Listing |
| `award` | Award amount (text) | Listing |
| `award_amount` | Award amount (numeric) | Listing |
| `deadline` | Application deadline | Listing |
| `description` | Scholarship description | Listing |
| `geographic_restrictions` | Geographic eligibility | Listing |
| `enrollment_level` | Required enrollment level | Listing |
| `majors` | Eligible majors/fields | Listing |
| `min_award` | Minimum award amount | Detail |
| `max_award` | Maximum award amount | Detail |
| `award_type` | Type (Scholarship/Grant/Fellowship) | Detail |
| `renewable` | Whether award is renewable | Detail |
| `repay_required` | Whether repayment is required | Detail |
| `unlimited_awards` | Whether awards are unlimited | Detail |
| `enrollment_detail` | Detailed enrollment requirements | Detail |
| `ethnicity` | Ethnicity requirements | Detail |
| `gender` | Gender requirements | Detail |
| `requirements` | Additional requirements | Detail |
| `gpa` | GPA requirement | Detail |
| `sponsor_name` | Scholarship sponsor | Detail |
| `sponsor_url` | Sponsor website | Detail |
| `apply_url` | Direct application link | Detail |
| `full_description` | Full description from detail page | Detail |
| `source` | Data source identifier | — |

### Input Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `keyword` | String | — | Filter by keyword (e.g., "engineering", "nursing") |
| `maxResults` | Select | 100 | Max results: 50/100/200/500/1000/2000/5000 |
| `maxPages` | Select | 10 | Max pages to scrape (30/page): 5/10/20/50/100/769 |
| `fetchDetails` | Checkbox | ✓ | Fetch detail pages for enriched data |
| `minAward` | Select | — | Minimum award filter: $500-$25,000 |
| `sortBy` | Select | none | Sort: none/award\_high/award\_low/deadline |

### Example Usage

**Top 100 highest-value scholarships:**

```json
{
  "maxResults": "100",
  "maxPages": "10",
  "fetchDetails": true,
  "sortBy": "award_high"
}
```

**Engineering scholarships over $5,000:**

```json
{
  "keyword": "engineering",
  "maxResults": "200",
  "maxPages": "20",
  "minAward": "5000",
  "fetchDetails": true
}
```

**All scholarships sorted by deadline:**

```json
{
  "maxResults": "500",
  "maxPages": "20",
  "sortBy": "deadline",
  "fetchDetails": false
}
```

### How It Works

1. **Browse**: Iterates through listing pages (30 scholarships/page)
2. **Parse**: Extracts basic fields (title, award, deadline, description, eligibility)
3. **Enrich** (optional): Visits each detail page for 13+ additional fields
4. **Filter**: Applies keyword and minimum award filters
5. **Sort**: Orders results by award amount or deadline
6. **Export**: Pushes structured data to Apify dataset

### Data Source

- **CollegeScholarships.org** — One of the largest free scholarship databases
- 23,000+ scholarships across all academic disciplines
- Updated regularly with new opportunities
- No registration or API key required

### Pricing

$5 per 1,000 results.

### Why This Scraper?

| Feature | This Scraper | Competitors |
|---|---|---|
| Fields | **23+** | 6-15 |
| Detail enrichment | ✅ | ❌ Most |
| Award min/max | ✅ | ❌ |
| Sponsor info | ✅ | ❌ |
| Keyword filter | ✅ | Some |
| Sort by award | ✅ | ❌ |
| Data source size | 23,000+ | 3,400-10,000 |

# Actor input Schema

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

Filter scholarships by keyword in title, description, or major (e.g., 'engineering', 'nursing', 'STEM'). Leave blank for all.

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

Maximum number of scholarships to return.

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

Maximum listing pages to scrape (30 results per page).

## `fetchDetails` (type: `boolean`):

Visit each scholarship's detail page for enriched data (min/max award, ethnicity, GPA, sponsor, etc.). Slower but 20+ fields.

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

Only include scholarships with award >= this value.

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

Sort order for results.

## Actor input object example

```json
{
  "keyword": "",
  "maxResults": "100",
  "maxPages": "10",
  "fetchDetails": true,
  "minAward": "",
  "sortBy": "none"
}
```

# 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 = {
    "keyword": "",
    "maxResults": "100",
    "maxPages": "10",
    "fetchDetails": true,
    "minAward": "",
    "sortBy": "none"
};

// Run the Actor and wait for it to finish
const run = await client.actor("commanding_hotdog/scholarship-finder-scraper").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 = {
    "keyword": "",
    "maxResults": "100",
    "maxPages": "10",
    "fetchDetails": True,
    "minAward": "",
    "sortBy": "none",
}

# Run the Actor and wait for it to finish
run = client.actor("commanding_hotdog/scholarship-finder-scraper").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 '{
  "keyword": "",
  "maxResults": "100",
  "maxPages": "10",
  "fetchDetails": true,
  "minAward": "",
  "sortBy": "none"
}' |
apify call commanding_hotdog/scholarship-finder-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,commanding_hotdog/scholarship-finder-scraper"
        }
    }
}

```

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/efJ8M6hdFS2UqDfJC/builds/si3VouWNAiNYQIW9U/openapi.json
