# USAC E-Rate & Rural Health Care Scraper (`compute-edge/usac-erate-scraper`) Actor

Extract funding data from USAC (Universal Service Administrative Company) public datasets. Query E-Rate FRN status, line items, Rural Health Care subsidies, and Form 470 bids. Filter by state, funding year, and form version. Returns structured records with dollar amounts, provider details, and appli

- **URL**: https://apify.com/compute-edge/usac-erate-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## USAC E-Rate & Rural Health Care Scraper

Extract funding data from USAC (Universal Service Administrative Company) public datasets via the Socrata Open Data API. Query E-Rate FRN status, line items, Rural Health Care subsidies, and Form 470 bids for any US state.

### Features

- **4 USAC datasets** — E-Rate FRN Status, E-Rate Line Items, Rural Health Care, and Form 470 Bids
- **Filter by state** — Query any US state by two-letter code, or leave empty for nationwide data
- **Funding year range** — Specify min/max funding years (data available from ~1998 to present)
- **Form version filter** — Pull only "Current" form versions to avoid duplicates (E-Rate datasets)
- **Automatic pagination** — Handles Socrata API pagination transparently
- **Clean structured output** — camelCase field names, numeric dollar amounts, null-safe

### Datasets

| Key | Socrata ID | Description |
|-----|-----------|-------------|
| `erate_frn` | qdmp-ygft | E-Rate Form 471 funding requests — who got subsidies, from which provider, how much |
| `erate_line_items` | hbj5-2bpj | E-Rate line item details — technology type, equipment, bandwidth, costs |
| `rural_health_care` | 2kme-evqq | Rural Health Care program — hospital/clinic subsidies, provider names, service details |
| `form470_bids` | jt8s-3q52 | Form 470 bidding data — what entities are requesting, service categories |

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `dataset` | string | `erate_frn` | Which USAC dataset to query (required) |
| `state` | string | `""` | Two-letter US state code (empty = all states) |
| `fundingYearMin` | integer | `2016` | Earliest funding year |
| `fundingYearMax` | integer | `2026` | Latest funding year |
| `formVersion` | string | `Current` | Form version filter (E-Rate only) |
| `maxResults` | integer | `10000` | Max records to return (0 = unlimited) |

### Output

Output fields depend on the selected dataset. All datasets include a `source` field identifying the dataset name and a `fundingYear` numeric field.

#### E-Rate FRN Status
Key fields: `organizationName`, `spinName`, `frnStatus`, `serviceType`, `fundingCommitmentRequest`, `discountPercent`, `totalAuthorizedDisbursement`, `narrative`, `contractExpirationDate`

#### E-Rate Line Items
Key fields: `organizationName`, `functionName`, `productName`, `manufacturerName`, `modelOfEquipment`, `preDiscountExtendedEligibleCosts`

#### Rural Health Care
Key fields: `participatingHcpName`, `serviceProviderName`, `serviceType`, `totalCommittedAmount`, `totalAuthorizedDisbursement`, `downloadSpeed`, `uploadSpeed`

#### Form 470 Bids
Key fields: `billedEntityName`, `applicantType`, `serviceType`, `certifiedDateTime`, `contactName`

### Data Source

All data is pulled from USAC's public Socrata Open Data portal at `opendata.usac.org`. No authentication required. The data is maintained by USAC as part of its regulatory obligation to publish Universal Service Fund program data.

### Pricing

This Actor uses **pay-per-result** pricing:

| Event | Price |
|-------|-------|
| Actor Start | $0.00005 |
| Per result | $0.002 |

A typical run of 1,000 records costs approximately $2.00 in Actor fees plus minimal Apify compute costs.

### FAQ

#### Is it legal to scrape USAC E-Rate data?

Yes. This Actor accesses publicly available data from USAC's Socrata Open Data portal. The data is published by USAC as part of its regulatory obligation to publish Universal Service Fund program data. No authentication is required.

#### How Much Does It Cost to Scrape USAC E-Rate Data?

See the pricing table above. At $0.002 per result, fetching 10,000 E-Rate records costs approximately $20.00 in Actor fees plus minimal Apify compute costs.

#### Can I export E-Rate data to Excel or CSV?

Yes. Apify supports exporting results in JSON, CSV, Excel, XML, and other formats directly from the Dataset tab after a run completes.

#### How often is the USAC data updated?

USAC updates their open data portal regularly as funding decisions are made and disbursements are processed. You can schedule this Actor to run at any interval to capture new records.

#### What funding years are available?

Data is available from approximately 1998 to the present. The Actor defaults to funding years 2016-2026 but you can adjust the range.

### Other Scrapers by SeatSignal

- [Federal Audit Scraper](https://apify.com/seatsignal/federal-audit-scraper) — Extract federal audit and grant data from the Federal Audit Clearinghouse
- [SBIR Awards Scraper](https://apify.com/seatsignal/sbir-awards-scraper) — Extract government grant and contract award data
- [Treasury Fiscal Data Scraper](https://apify.com/seatsignal/treasury-fiscal-scraper) — Extract national debt, interest rates, and government financial data
- [NIH Grants Scraper](https://apify.com/seatsignal/nih-grants-scraper) — Extract NIH research grant awards data
- [HUD Fair Market Rents Scraper](https://apify.com/seatsignal/hud-fair-market-rents-scraper) — Extract HUD housing affordability data

### Legal Disclaimer

This Actor extracts publicly available data from USAC's open data portal. The data is published by USAC for public use. Users are responsible for ensuring their use of the data complies with applicable laws and regulations. This Actor does not collect personal data beyond what is publicly published in USAC's datasets.

# Actor input Schema

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

Which USAC dataset to pull.
## `state` (type: `string`):

Two-letter US state code to filter by (e.g., 'AK', 'CA', 'TX'). Leave empty for all states.
## `fundingYearMin` (type: `integer`):

Earliest funding year to include (e.g., 2016). USAC data goes back to ~1998.
## `fundingYearMax` (type: `integer`):

Latest funding year to include (e.g., 2026). Leave at default for most recent.
## `formVersion` (type: `string`):

Form version filter for E-Rate datasets. 'Current' = latest version of each form (recommended). Does not apply to RHC or Form 470 datasets.
## `maxResults` (type: `integer`):

Maximum number of records to return. Set to 0 for unlimited.

## Actor input object example

```json
{
  "dataset": "erate_frn",
  "state": "",
  "fundingYearMin": 2016,
  "fundingYearMax": 2026,
  "formVersion": "Current",
  "maxResults": 10000
}
````

# Actor output Schema

## `dataset` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/usac-erate-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/usac-erate-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call compute-edge/usac-erate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/usac-erate-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "USAC E-Rate & Rural Health Care Scraper",
        "description": "Extract funding data from USAC (Universal Service Administrative Company) public datasets. Query E-Rate FRN status, line items, Rural Health Care subsidies, and Form 470 bids. Filter by state, funding year, and form version. Returns structured records with dollar amounts, provider details, and appli",
        "version": "0.1",
        "x-build-id": "HGqZIH3SJCXcNxB8P"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~usac-erate-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-usac-erate-scraper",
                "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/compute-edge~usac-erate-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-usac-erate-scraper",
                "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/compute-edge~usac-erate-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-usac-erate-scraper",
                "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",
                "required": [
                    "dataset"
                ],
                "properties": {
                    "dataset": {
                        "title": "Dataset",
                        "enum": [
                            "erate_frn",
                            "erate_line_items",
                            "rural_health_care",
                            "form470_bids"
                        ],
                        "type": "string",
                        "description": "Which USAC dataset to pull.",
                        "default": "erate_frn"
                    },
                    "state": {
                        "title": "State",
                        "type": "string",
                        "description": "Two-letter US state code to filter by (e.g., 'AK', 'CA', 'TX'). Leave empty for all states.",
                        "default": ""
                    },
                    "fundingYearMin": {
                        "title": "Minimum Funding Year",
                        "minimum": 1998,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Earliest funding year to include (e.g., 2016). USAC data goes back to ~1998.",
                        "default": 2016
                    },
                    "fundingYearMax": {
                        "title": "Maximum Funding Year",
                        "minimum": 1998,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Latest funding year to include (e.g., 2026). Leave at default for most recent.",
                        "default": 2026
                    },
                    "formVersion": {
                        "title": "Form Version",
                        "enum": [
                            "Current",
                            "Original",
                            ""
                        ],
                        "type": "string",
                        "description": "Form version filter for E-Rate datasets. 'Current' = latest version of each form (recommended). Does not apply to RHC or Form 470 datasets.",
                        "default": "Current"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "maximum": 500000,
                        "type": "integer",
                        "description": "Maximum number of records to return. Set to 0 for unlimited.",
                        "default": 10000
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
