GreatSchools District Scraper avatar

GreatSchools District Scraper

Pricing

from $12.99 / 1,000 result items

Go to Apify Store
GreatSchools District Scraper

GreatSchools District Scraper

Scrapes GreatSchools district profiles by state, city, or direct URL. Returns district names, ratings, student counts, addresses, and contact details as a flat row.

Pricing

from $12.99 / 1,000 result items

Rating

5.0

(3)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

2

Bookmarked

67

Total users

1

Monthly active users

7 days ago

Last modified

Share

ParseForge

GreatSchools District Scraper

Scrape school district data from GreatSchools by state, city, or direct URL. Collect district names, ratings, student counts, and contact details for every district in a region. Export to CSV, JSON, Excel, or XML.

GreatSchools district data is spread across thousands of pages with no bulk export. This scraper reads the public district listings directly, so you can pull structured records by state, city, or a list of URLs. You get a clean dataset of district profiles without writing code.

Who uses itWhat they scrape GreatSchools for
Real estate professionalsBuild neighborhood guides with district ratings and school counts for client presentations.
Education researchersCompare district sizes, ratings, and geographic distribution across states.
Data journalistsInvestigate correlations between district demographics and academic outcomes.
EdTech companiesEnrich a CRM with current district contact information for outreach campaigns.

What it does

This Actor collects GreatSchools district profiles by state, city, or direct URL and returns each district as a flat row.

  • 🔗 Direct URL scraping: Paste a list of district page URLs and collect their full profiles immediately.
  • 🗺️ State and city discovery: Provide a state name, optionally narrow it down with a city, and the Actor finds every district listing for you.
  • ⚙️ Configurable concurrency: Set the maximum parallel requests from 1 to 20 to stay under any rate limits.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with GreatSchools data

🏡 Power a real estate search tool.

A property portal runs the scraper weekly on a list of district URLs to keep school ratings current on every listing page.

📊 Build a statewide education report.

A policy analyst provides a state name like 'texas' and collects every district's rating and student count for an annual comparison.

🎯 Generate a lead list for school services.

A sales team scrapes districts by city to get names, addresses, and phone numbers for a direct mail campaign.

Why choose this scraper

What you get
No API key requiredReads the public GreatSchools pages directly, so you skip the registration and approval process.
Structured outputEvery district comes back in a consistent schema ready for analysis or a database import.
Flexible targetingScrape a hand-picked list of districts or discover every district in a state with one run.

How it compares

This Actor focuses on district-level data, while the GreatSchools Schools Scraper targets individual school listings.

FeatureParseForgeGreatSchools Schools Scraper - Low-cost
Scrapes district profilesYesNot listed
Scrapes individual school profilesNot listedYes
Discovery by state and cityYesYes
Direct URL inputYesNot listed
Returns district contact detailsYesNot listed

Configure the run

Drive the Actor from a list of district URLs or let it discover districts by state and city, and set a cap on the total number of results collected per run. The Input tab lists every parameter.

A first run with the defaults:

{
"startUrls": [
"https://www.greatschools.org/california/los-angeles/los-angeles-unified-school-district/"
],
"maxItems": 10
}

A larger pull:

{
"startUrls": [
"https://www.greatschools.org/california/los-angeles/los-angeles-unified-school-district/"
],
"maxItems": 200
}

Pricing

Pay-per-result: $0.01734 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$1.73
1,000 results$17.34
10,000 results$173.40

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect more results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the GreatSchools District Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to GreatSchools through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/greatschools-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your state or city name matches the exact format used in GreatSchools URLs. For example, use 'north-carolina' not 'nc'. If you are using startUrls, verify the URLs point to a valid district page and not a school page.

The run is very slow or timing out.

Lower the 'Max Concurrency' setting to 1 or 2 to reduce the load on the target site. Also, try reducing the 'Maximum results' number to limit the scope of the run.

I received a 403 or 429 error.

GreatSchools is rate-limiting your requests. Reduce the max concurrency and consider using Apify residential proxies for a less detectable request pattern.

The data is missing some fields like the phone number.

Not every GreatSchools district profile has a listed phone number or address. The scraper returns whatever is publicly available on the page, so some fields may be empty for certain districts.

FAQ

QuestionAnswer
Can I scrape school data instead of district data?This Actor is built for district profiles. If you need individual school listings, use the GreatSchools Schools Scraper, which extracts school names, ratings, and addresses from city or state pages.
How do I format the state and city inputs?Use the full lowercase state name as it appears in a GreatSchools URL, like 'california' or 'new-york'. For cities, use the lowercase hyphenated form, like 'los-angeles' or 'san-francisco'.
What happens if I provide both a start URL and a state?The direct URLs in the startUrls field take priority. The state and city filters are ignored so you get exactly the districts you listed.
Is there a limit on how many districts I can scrape?You control the maximum number of results collected per run with the 'Maximum results' setting. Set it high to get every district in a large state.
What data fields does the scraper return?The output includes the district name, rating, number of schools, student count, address, phone number, and the GreatSchools profile URL. The exact fields are shown in a sample record on the Actor's page.
Can I run this on a schedule?Yes, you can set up a recurring schedule in Apify to run the scraper daily or weekly and keep your district data fresh.
Will I get blocked by GreatSchools?The Actor uses reasonable defaults and lets you lower the max concurrency if you see rate limiting. For large, frequent runs, using Apify proxies is recommended.
How do I export the results?Your dataset can be downloaded in CSV, JSON, Excel, or XML from the Apify storage tab after the run finishes.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by GreatSchools, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.