GreatSchools Scraper avatar

GreatSchools Scraper

Pricing

from $10.00 / 1,000 results

Go to Apify Store
GreatSchools Scraper

GreatSchools Scraper

[πŸ’° $10 / 1K] Extract US K-12 school data from GreatSchools.org: 1-to-10 ratings, principal and contact details, test scores, demographics, and enrollment. Search by city, state, or ZIP, or paste GreatSchools URLs. Covers public, charter, and private schools across all 50 states.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pull US K-12 school data from GreatSchools.org at scale β€” 1-to-10 ratings, test scores by subject, student demographics, enrollment, and principal contacts for public, charter, and private schools across all 50 states. Search by city, state, or ZIP, or paste any GreatSchools URL. Built for real estate and relocation services, EdTech teams, and market researchers who need verified, structured school data without manually opening one profile page at a time.

Why This Scraper?

  • All 50 US states plus D.C. β€” search any city, state, or ZIP code, or paste a GreatSchools listing or profile URL. Mix locations and URLs in a single run.
  • The 1-to-10 GreatSchools rating, fully broken out β€” every school's overall summary rating plus three sub-ratings: test-score rating, student-progress rating, and equity rating.
  • Test scores by subject β€” per-subject proficiency percentages (math, reading/ELA, science, and more), not just a single blurred average.
  • Student demographics on every school β€” race/ethnicity breakdown percentages plus the low-income student percentage, ready for equity and access analysis.
  • Principal name and email when listed β€” go straight to the decision-maker on claimed profiles, with the school's phone, website, and Facebook page included.
  • 4 school levels and 3 school types β€” filter to preschool, elementary, middle, or high, and to public, charter, or private, in any combination.
  • Enrollment, student-teacher ratio, district, and exact coordinates β€” total enrollment, a clean 16:1-style ratio, district name and city, plus latitude/longitude on every row.
  • Fast listing mode or full enrichment β€” flip includeDetails off for quick name/rating/address rows, or on for the complete 30+ field profile.

Use Cases

Real Estate & Relocation

  • Attach school ratings and test scores to property listings in a target ZIP
  • Build relocation guides comparing schools across candidate neighborhoods
  • Rank neighborhoods by the strength of their assigned schools
  • Answer buyer questions about district quality with sourced numbers

Market Research

  • Map school quality, type, and enrollment across a metro or state
  • Compare public, charter, and private options in the same area
  • Track demographic and low-income mix across districts
  • Benchmark test-score proficiency between competing districts

EdTech & Data Products

  • Power school-search and comparison tools with structured records
  • Enrich an existing school database with ratings and demographics
  • Feed dashboards that monitor district and school-level performance
  • Build alerting on enrollment, rating, or demographic shifts

Parent & Family Research

  • Shortlist schools by level, type, and rating before touring
  • Compare test scores and student-teacher ratios side by side
  • Weigh demographics and low-income mix for schools on a shortlist
  • Pull principal contact details to reach out with questions

Lead Generation

  • Build principal and school contact lists (name, email, phone) by area
  • Target schools by type and level for education-focused outreach
  • Segment outreach by district, enrollment size, or rating band

Getting Started

Search by City

The simplest way to start β€” one city and state:

{
"searchLocations": ["Austin, TX"],
"maxResults": 50
}

Search by ZIP with Filters

Pull only public and charter elementary and middle schools in three ZIP codes:

{
"searchLocations": ["78701", "78702", "78703"],
"schoolLevels": ["elementary", "middle"],
"schoolTypes": ["public", "charter"],
"maxResults": 200
}

Full Detail Run

Mix locations and a URL, pull every enriched field, and collect everything found:

{
"searchLocations": ["Denver, CO", "80206"],
"startUrls": ["https://www.greatschools.org/colorado/denver/schools/"],
"schoolLevels": ["high"],
"schoolTypes": ["public"],
"includeDetails": true,
"maxResults": 0
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchLocationsarray["Austin, TX"]Cities (e.g. Austin, TX) or ZIP codes (e.g. 78701) to search. Add as many as you like β€” no URLs to build.
startUrlsarray[]Any GreatSchools.org search or school-profile URL. Filters already in the URL are applied automatically.

Search Filters

These filters apply only to searchLocations. URLs carry their own filters.

ParameterTypeDefaultDescription
schoolLevelsarray[] (all)Limit to grade levels: Preschool / Pre-K, Elementary, Middle, High School.
schoolTypesarray[] (all)Limit to school types: Public, Charter, Private.

Options

ParameterTypeDefaultDescription
maxResultsinteger100Exact maximum schools to return across all locations and URLs. Set to 0 for unlimited.
includeDetailsbooleantrueOpen each profile for the full record β€” ratings breakdown, test scores, demographics, and principal contact. Off returns fast name/rating/address/URL rows. Very large single-location runs (200+) with details on take several minutes; lower maxResults or split into multiple ZIP/city runs for faster turnaround.

Output

Each result is one flat row per school. With includeDetails on, the profile fields below are populated; with it off, you get the core listing fields.

{
"id": "18850",
"name": "Lee Elementary School",
"url": "https://www.greatschools.org/texas/austin/18850-Lee-Elementary-School/",
"schoolType": "public",
"level": "Elementary",
"gradesServed": "PK-5",
"latitude": 30.2849,
"longitude": -97.7341,
"addressStreet": "3308 Hampton Rd",
"addressCity": "Austin",
"addressState": "TX",
"addressZip": "78705",
"phone": "(512) 414-2236",
"website": "https://example.austinisd.org",
"facebook": "https://www.facebook.com/example",
"principalName": "Jane Doe",
"principalEmail": "jane.doe@austinisd.org",
"overallRating": 9,
"ratingScaleLabel": "Above average",
"testScoresRating": 9,
"studentProgressRating": 8,
"equityRating": 7,
"reviewsCount": 24,
"reviewsAverageRating": 4.5,
"testScores": [
{ "subject": "Math", "proficiencyPercentage": 72 },
{ "subject": "Reading", "proficiencyPercentage": 78 }
],
"enrollmentTotal": 412,
"studentTeacherRatio": "15:1",
"demographics": [
{ "group": "White", "percentage": 58 },
{ "group": "Hispanic", "percentage": 26 }
],
"lowIncomePercentage": 18,
"districtId": "1234",
"districtName": "Austin Independent School District",
"districtCity": "Austin",
"scrapedAt": "2026-06-27T12:00:00.000Z"
}

Core Fields

FieldTypeDescription
idstringGreatSchools universal school ID
namestringSchool name
urlstringGreatSchools profile URL
schoolTypestringpublic, charter, or private
levelstringGrade band (Preschool / Elementary / Middle / High)
gradesServedstringGrades offered, e.g. K-5, 9-12
enrollmentTotalintegerTotal students enrolled
studentTeacherRatiostringStudents per teacher, e.g. 15:1
scrapedAtstringISO timestamp of capture

Ratings & Reviews

FieldTypeDescription
overallRatingnumberGreatSchools summary rating (1-10)
ratingScaleLabelstringPlain-language rating band, e.g. Above average
testScoresRatingnumberTest-scores sub-rating (1-10)
studentProgressRatingnumberStudent-progress sub-rating (1-10)
equityRatingnumberEquity sub-rating (1-10)
reviewsCountintegerNumber of parent reviews
reviewsAverageRatingnumberAverage parent review rating
testScoresobject[]Per-subject proficiency: { subject, proficiencyPercentage }

Address & Contact

FieldTypeDescription
addressStreetstringStreet address
addressCitystringCity
addressStatestringState code
addressZipstringZIP code
latitudenumberLatitude
longitudenumberLongitude
phonestringSchool phone number
websitestringSchool website
facebookstringSchool Facebook page
principalNamestringPrincipal name (claimed profiles)
principalEmailstringPrincipal email (claimed profiles)

Demographics & District

FieldTypeDescription
demographicsobject[]Race/ethnicity breakdown: { group, percentage }
lowIncomePercentagenumberPercent of low-income students
districtIdstringDistrict ID
districtNamestringDistrict name
districtCitystringDistrict city

Tips for Best Results

  • Start small, then scale β€” set maxResults to 10-50 on your first run to confirm the data matches your needs before pulling thousands.
  • Turn off includeDetails for fast bulk listings β€” when you only need name, rating, address, and URL, this collects far more schools per run; turn it back on for test scores, demographics, and principal contacts.
  • Large detail runs take longer β€” pulling 200+ schools from a single city or ZIP with includeDetails on can run several minutes, since each profile is opened individually. For faster turnaround, lower maxResults or split a big city into several smaller ZIP or city runs.
  • Match GreatSchools' own city spelling β€” type the city exactly as GreatSchools writes it (e.g. Saint Louis, MO, not St. Louis, MO); an unrecognized spelling returns no results rather than an error.
  • Use ZIP codes for precise neighborhood targeting β€” a ZIP search pins results to a specific area, while a city search returns the whole city.
  • Remember filters apply only to searchLocations β€” schoolLevels and schoolTypes do not change results coming from startUrls, which carry their own filters.
  • Combine inputs in one run β€” mix multiple cities, ZIP codes, and URLs together; results are deduplicated so overlapping areas never double-count a school.
  • Principal email is best-effort β€” it appears on claimed profiles; expect it on a subset of schools rather than every row.

Pricing

From $10 per 1,000 results β€” a flat, predictable rate for verified US school data. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$1.20$1.13$1.07$1.00
1,000$12.00$11.30$10.70$10.00
10,000$120.00$113.00$107.00$100.00
100,000$1,200.00$1,130.00$1,070.00$1,000.00

No compute or time-based charges β€” you pay per result, plus a small fixed per-run start fee. A "result" is any school row in the output dataset.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Trigger custom APIs on run completion
  • Apify API β€” Full programmatic access

This actor is designed for legitimate education research, real estate and relocation analysis, and market intelligence. Users are responsible for complying with applicable laws and GreatSchools.org's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any contact details responsibly and in line with applicable privacy regulations.