# K12 Schools Lead Generator (`parse-point/k12-schools-lead-generator`) Actor

🎒 K12 Schools Lead Generator returns primary and secondary school leads from Google Maps with coordinates, ratings and reviews. 📧 Emails and socials per site. 📚 For edtech sales & school supplier outreach.

- **URL**: https://apify.com/parse-point/k12-schools-lead-generator.md
- **Developed by:** [Parse Point](https://apify.com/parse-point) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 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

### K12 Schools Lead Generator

**K12 Schools Lead Generator** helps you build K-12 education leads from publicly available data and turn manual school prospecting into a fast, repeatable workflow. It’s built for school lead generation, education lead generation, and K12 school marketing, making it easier to uncover public school outreach and private school leads at scale. 🚀

### What is K12 Schools Lead Generator? 🔍

**K12 Schools Lead Generator** is an Apify actor that gathers business contact data for K-12 institutions from publicly available sources and organizes it into a structured dataset. It’s designed for marketers, sales teams, recruiters, and data analysts who need school database leads, parent outreach targets, and education sales leads without spending hours on manual research. If you work in school admissions marketing, district lead generation, or student recruitment, this actor helps you build targeted lists faster.

### What Data Does a K12 Schools Lead Generator Collect? 📊

This actor is focused on practical contact and business data that supports K12 enrollment marketing and outreach workflows. You can use it to collect names, websites, phone numbers, addresses, location details, ratings, review counts, and scraped contact signals like emails, phones, and social media links. It also returns a scrape status so you can quickly see which records were completed successfully.

| Data Category | Field Name | Description | Available |
|---|---|---|---|
| Contact | `scraped_emails` | Publicly available email addresses found during scraping | ✅ When listed |
| Identity | `name` | Business name of the school or organization | ✅ Always |
| Context | `full_address` | Full address assembled from available location fields | ✅ Always |
| Discovery | `website` | Website link associated with the business | ✅ When listed |
| Contact | `scraped_phones` | Public phone numbers found during scraping | ✅ When listed |
| Social | `scraped_social_media` | Public social media links found during scraping | ✅ When listed |
| Quality | `avg_rating` | Rating value associated with the business | ✅ When listed |
| Quality | `total_reviews` | Total review count associated with the business | ✅ When listed |

### Types of Data I Can Extract with K12 Schools Lead Generator 🗂️

**Contact Data**

- Website links for follow-up and verification
- Emails found from publicly available sources
- Phone numbers and social media profiles for outreach

**Identity Data**

- Business name
- City, state, ZIP, and country code
- Place ID and geographic coordinates

**Contextual Data**

- Address and location details
- Rating and review counts for basic prioritization
- Scrape status to show whether the record completed successfully

**Export Format**

- JSON dataset output ready for analysis, CRM import, or lead routing

#### Key Features of K12 Schools Lead Generator ⚡

| Feature | Benefit |
|---|---|
| ✅ **Keyword-Targeted Search** | Use your search term to focus on the exact K-12 education leads you need |
| ✅ **Location Filtering** | Narrow results to one or more cities, states, or regions |
| ✅ **Configurable Result Limits** | Control how many businesses with emails you want per run |
| ✅ **Per-Location Option** | Choose between a global cap or a separate cap for each location |
| ✅ **Proxy Configuration** | Supports proxy settings for more reliable public web data collection |
| ✅ **Structured Dataset Output** | Gives you clean, labeled records for school database leads and analysis |
| ✅ **Email, Phone, and Social Media Fields** | Captures multiple contact channels for stronger parent outreach |
| ✅ **Real-Time Saving** | Saves results as they are found to reduce the risk of data loss |

### K12 Schools Lead Generator User Guide 📖

#### Required Input Fields

```json
{
  "googleMapsSearchTerm": "K12 Schools",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsSearchTerm` | String | ✅ Yes | `K12 Schools` | The search term used to find the business niche you want to target. |
| `googleMapsLocation` | Array | ✅ Yes | `["New York"]` | One or more target locations where you want to find schools or related businesses. |
| `maxBusinesses` | Integer | No | `5` | Maximum number of businesses with emails to collect. The run stops once this limit is reached. |
| `scrapeMaxBusinessesPerLocation` | Boolean | No | `false` | If enabled, the actor collects up to the maximum result count for each location separately. |
| `proxyConfiguration` | Object | No | `{"proxy support":true}` | Proxy settings for more reliable scraping at scale. |

#### Required Output Fields

```json
{
  "name": "Bright Futures Academy",
  "website": "https://www.brightfuturesacademy.org",
  "phone": "+1 212-555-0148",
  "full_address": "125 W 96th St New York NY 10025 US",
  "city": "New York",
  "state": "NY",
  "zip": "10025",
  "country_code": "US",
  "scraped_emails": [
    "info@brightfuturesacademy.org"
  ],
  "scraped_phones": [
    "+1 212-555-0148"
  ],
  "scraped_social_media": [
    "https://www.facebook.com/brightfuturesacademy"
  ],
  "emails_found": 1,
  "pages_scraped": 6,
  "avg_rating": 4.7,
  "total_reviews": 38,
  "lat": "40.7931",
  "long": "-73.9725",
  "place_id": "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  "scrape_status": "success"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `name` | Business Name | text | The business name of the school or organization. |
| `website` | Website | link | The business website, when available. |
| `phone` | Phone | text | The main phone number listed for the business. |
| `full_address` | Address | text | The combined address text built from available location parts. |
| `city` | City | text | The city value associated with the business. |
| `state` | State | text | The state value associated with the business. |
| `zip` | zip | text | The ZIP or postal code. |
| `country_code` | country\_code | text | The country code value. |
| `scraped_emails` | Emails Found | array | Publicly available email addresses collected during scraping. |
| `scraped_phones` | Phone Numbers | array | Public phone numbers collected during scraping. |
| `scraped_social_media` | Social Media | array | Public social media links collected during scraping. |
| `emails_found` | # Emails | number | The number of emails found for the record. |
| `pages_scraped` | Pages Scraped | number | The number of pages processed for the business website. |
| `avg_rating` | Rating | number | The rating value associated with the business. |
| `total_reviews` | Reviews | number | The number of reviews associated with the business. |
| `lat` | lat | text | Latitude value for the business location. |
| `long` | long | text | Longitude value for the business location. |
| `place_id` | place\_id | text | The unique place identifier returned with the record. |
| `scrape_status` | Status | text | The final status of the scrape, such as success, failed, error, or no\_website. |

### Solving Real Problems with K12 Schools Lead Generator 💼

- 🎯 **Cold Outreach** — Build K-12 education leads for targeted campaigns without manual copy-paste work
- 📣 **School Admissions Marketing** — Find private school leads and public school outreach contacts faster
- 🤝 **Student Recruitment** — Create lists of schools and related contacts for admissions or enrollment campaigns
- 🔬 **Market Research** — Map school prospecting opportunities by city, state, or region
- 📊 **CRM Enrichment** — Add business names, websites, and contact details to your existing records
- ⚙️ **Lead Workflow Automation** — Reuse the actor for recurring district lead generation and education sales leads

### Why Choose K12 Schools Lead Generator? 🏆

- 💡 **Purpose-Built for K12 Lead Generation** — Tailored for K12 schools lead generator workflows, not generic contact lookup
- 📍 **Location-Aware** — Supports one or many locations for more focused school prospecting
- 📧 **Multi-Channel Contact Data** — Captures emails, phone numbers, and social media links when publicly available
- 🛡️ **Proxy Support** — Includes proxy configuration for more reliable public web data collection
- 💾 **Immediate Dataset Saving** — Results are saved during the run, helping reduce data loss on longer jobs
- 📈 **Structured Output** — Easy to filter, analyze, and export into marketing or research tools
- 🤝 **Real Support** — Reach out at <helloparsepoint@gmail.com>

### How Many Results Can You Scrape? 📈

- Use `maxBusinesses` to cap the total number of businesses with emails, from 1 to 1000.
- If `scrapeMaxBusinessesPerLocation` is `false`, all locations share one total limit.
- If `scrapeMaxBusinessesPerLocation` is `true`, the actor applies the limit per location.
- The final result count depends on your search term, location coverage, and how many public records include contact details.

### Legal Guidelines for Scraping K12 Schools ⚖️

This actor only accesses publicly available data and does not require logins or private access. You are responsible for using the output in compliance with applicable laws, including privacy and anti-spam rules, as well as the terms that apply to the sources you research. Use K12 Schools Lead Generator responsibly and only for legitimate business, research, or outreach purposes. Data-removal requests: <helloparsepoint@gmail.com>.

### FAQ — K12 Schools Lead Generator ❓

#### How Does K12 Schools Lead Generator Work?

You provide a search term and one or more locations, and the actor collects public business records that match your criteria. It then structures the results into a dataset with contact and business fields that support K12 education leads and school lead generation.

#### What Types of Data Can I Extract?

You can extract names, websites, phone numbers, addresses, city and state details, ZIP and country code, emails found, phone numbers, social media links, ratings, review counts, coordinates, place ID, and scrape status.

#### Can I Use It for Private School Leads and Public School Outreach?

Yes, as long as the records are publicly available. It’s useful for both private school leads and public school outreach workflows where you need structured contact information.

#### Why Is Location Important for School Prospecting?

Location helps you focus on district lead generation or region-specific education lead generation. It makes it easier to prioritize schools and organizations in the exact markets you want to reach.

#### What Makes This Useful for K12 Enrollment Marketing?

The actor helps you build a clean list of school contacts and business records that can support parent outreach, student recruitment, and K12 enrollment marketing campaigns.

#### How Can I Improve My Results?

Use a clear search term, add relevant locations, and choose a sensible result cap. Broader search terms can help when you want more education sales leads across multiple areas.

#### Who Can Benefit Most from This Actor?

It’s a strong fit for marketers, sales teams, researchers, and analysts who need school database leads, contact data, or structured records for outreach and reporting.

#### How Do I Get Support?

For help, feedback, or feature requests, contact <helloparsepoint@gmail.com>.

### Final Word ✉️

**K12 Schools Lead Generator** gives you a faster way to build targeted K-12 education leads from public data, with structured output ready for outreach and analysis. If you need school lead generation without manual work, this actor helps you move from search to actionable leads quickly. 🚀

### 🆘 Support & Feedback

Have a question or want to suggest a feature for K12 Schools Lead Generator?

- 🐞 **Bug Reports:** Share any issues you encounter so they can be reviewed
- ✨ **Custom Requests:** Suggest improvements for school admissions marketing, parent outreach, or district lead generation
- 📧 **Email:** <helloparsepoint@gmail.com>

### Complete number formats

| Field | Meaning |
| --- | --- |
| `phoneRaw` | The exact text the number was read from, before any normalisation |
| `phoneE164` | International dialable form, e.g. `+442079460958` |
| `phoneNational` | As someone inside that country would dial it |
| `phoneInternational` | Readable international form, e.g. `+44 20 7946 0958` |
| `phoneRfc3966` | `tel:` URI for VoIP systems (optional) |
| `phoneExtension` | The internal extension, when one was published |
| `phoneNumbers` | Every number on the row, each in all of the above forms |

Numbers are parsed against the business's own country from its Maps listing.
`phoneRaw` is never derived, so it stays trustworthy even when parsing the rest
fails.

### Contact Memory

| Field | Meaning |
| --- | --- |
| `firstSeenAt` | The date this contact was first delivered to you, across all runs |
| `isNewSinceLastRun` | `false` for a contact an earlier run already returned |

These carry real information because repeats are still delivered by default —
a scraper that dropped duplicates before delivery would mark every row new and
tell you nothing. If you would rather not receive repeats at all, **Skip
contacts delivered by a previous run** suppresses them, and **Reset contact
memory** starts the record over.

A contact is identified by its email address where there is one, otherwise by
its phone number.

# Actor input Schema

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

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

## `proxyConfiguration` (type: `object`):

Proxy settings for scraping. Recommended for large-scale scraping.

## `includeDialerUri` (type: `boolean`):

Add the tel: URI form some VoIP and telephony systems expect. It duplicates information already in the other number columns - keep it only if your phone system asks for this exact format.

## `skipPreviouslySeenContacts` (type: `boolean`):

Suppress any contact an earlier run already returned, so a scheduled job only pays for what is new. Off by default - leave it off if you want the full list each time and would rather filter on the New column yourself.

## `resetContactMemory` (type: `boolean`):

Clear the remembered contacts before this run, so everything counts as new again. Use after changing your target list.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "K12 Schools",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "includeDialerUri": true,
  "skipPreviouslySeenContacts": false,
  "resetContactMemory": false
}
```

# 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 = {
    "googleMapsSearchTerm": "K12 Schools",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parse-point/k12-schools-lead-generator").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 = {
    "googleMapsSearchTerm": "K12 Schools",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parse-point/k12-schools-lead-generator").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 '{
  "googleMapsSearchTerm": "K12 Schools",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parse-point/k12-schools-lead-generator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parse-point/k12-schools-lead-generator"
        }
    }
}

```

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/KH9yLLwZo9mTP1DSg/builds/bQd3pPlgmz76CJuUb/openapi.json
