ParseForge Scrapers

Niche Scraper - School Districts, Schools & Colleges

parseforge/niche-school-district-profiles-scraper

EducationLead generation

Reads Niche profiles into structured rows: the overall grade, every subject grade, the statistics table with national comparisons, all published rankings, address, phone, website, star rating, review count, member schools and area income, rent and home value.

Run this scraper See the API call
Total runs
79
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Niche Scraper - School Districts, Schools & Colleges return?

ParseForge

Niche Scraper - School Districts, Schools & Colleges

Turn Niche profiles into structured rows: the overall Niche grade, every subject grade, the full statistics table with its national comparisons, all published rankings, contact details, star rating, review count and the schools inside a district. Covers school districts, K-12 schools, colleges, graduate schools and places. Export to CSV, JSON, Excel, or XML.

Who uses it What they pull from Niche
Real estate and proptech District grades and area income, rent and home value, joined to a listing
Education researchers Proficiency, graduation rate, spend per student and teacher pay at scale
EdTech and enrolment teams Ranked lists of districts and schools by state, with contact details
Relocation services A comparable grade and rating for every district in a metro
Journalists Rankings and review sentiment across a state

What it does

Pick an entity type and a state, and the Actor reads Niche's own published sitemap to find the profiles, then opens each one and extracts:

  • πŸŽ“ Grades: the overall Niche grade plus every subject grade the profile carries, as a label-to-grade map. For a district that is Academics, Diversity, Teachers, College Prep, Clubs & Activities, Administration, Sports, Food and Resources & Facilities.
  • πŸ“Š Statistics with national baselines: percent proficient in reading and maths, average graduation rate, student count, free or reduced lunch share, average teacher salary, share of teachers in their first two years, and expenses per student, each paired with the national figure Niche prints beside it.
  • πŸ† Rankings: every published list the profile appears on, split into the list name, the rank and the size of the field, deduplicated.
  • πŸ“ Contact and location: website, phone, street address, city, state and ZIP.
  • ⭐ Reviews: the star rating and review count on every row, and optionally up to ten review excerpts.
  • 🏫 Member schools: optionally, the schools listed on a district or college profile, each with its own rating and review count.
  • 🏘️ Area: the name of the surrounding town and its median household income, median rent and median home value.

What you can do with Niche data

🏑 Score a housing market by its schools.

Pull every district in a state with its grade, proficiency and area home value, and rank the ones where school quality outruns house prices.

πŸ“ˆ Benchmark a district.

Every statistic arrives beside the national figure Niche prints next to it, so a row is already a comparison rather than a number needing context.

πŸ—ΊοΈ Build a state-wide table.

Set state and let it walk the sitemap. Rankings arrive parsed, so "#26 of 217" is two numbers you can sort on.

Why choose this scraper

What you get
Five profile types School districts, K-12 schools, colleges, graduate schools and places, all through the same row shape.
Grades as data, not text Grades come back as a {"Academics": "A", "Teachers": "B+"} map with the screen-reader prefix and the "minus" spelling already normalised to A-.
Statistics with the national baseline Expenses Per Student: $26,445 / student arrives with Expenses Per Student (national): $17,834 beside it.
Self-healing against the bot wall Niche is behind HUMAN (PerimeterX). When a page comes back flagged the Actor takes a new exit IP and retries that same URL, rather than burning the run against a dead address.
Dead links cost nothing Niche's sitemaps carry a 2025 timestamp and some slugs have since died. A 404 is skipped on sight and never billed. Retrying them is also what escalates HUMAN from a challenge to an IP ban, so skipping them protects the rest of the run.
Public pages only Niche's robots.txt disallows its /api/ prefix. This Actor does not touch it: it reads the published sitemap and the profile pages.

What a row looks like

{
  "entityType": "school-districts",
  "name": "Milton Public Schools",
  "url": "https://www.niche.com/k12/d/milton-public-schools-ma/",
  "overallGrade": "A",
  "grades": { "Academics": "A", "Diversity": "B", "Teachers": "A", "College Prep": "A", "Sports": "B+" },
  "stats": {
    "Percent Proficient - Reading": "45%",
    "Average Graduation Rate": "93%",
    "Students": "4,503",
    "Average Teacher Salary": "$79,373",
    "Expenses Per Student": "$19,356 / student",
    "Expenses Per Student (national)": "$17,834"
  },
  "rankings": [{ "list": "Best School Districts in Massachusetts", "rank": 26, "outOf": 217 }],
  "website": "https://www.miltonps.org/",
  "phone": "(617) 696-4808",
  "streetAddress": "25 GILE RD",
  "cityStateZip": "MILTON, MA 02186",
  "state": "MA",
  "zip": "02186",
  "rating": 4.23,
  "reviewCount": 31,
  "areaMedianHouseholdIncome": 188529,
  "areaMedianHomeValue": 933200
}

Configure the run

Input What it does
entityType school-districts, k12-schools, colleges, graduate-schools or places.
startUrls Specific Niche profile URLs. Skips discovery.
state Two-letter state code. Applied to the sitemap, so it costs nothing.
nameContains Keep only profiles whose URL contains this text.
includeMemberSchools Attach the schools listed on the profile.
includeReviews Attach up to ten review excerpts.
proxyConfiguration Residential is required; see below.
maxItems How many profiles to return.

Free users

Free-plan runs return up to 10 profiles as a preview. Upgrade your Apify plan to collect up to 1,000,000 per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Niche Scraper.
  3. Pick an entityType, type a state, and click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Use with AI agents (MCP)

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/niche-school-district-profiles-scraper"
  • "Rank Massachusetts school districts by graduation rate and show me the area home values."
  • "Which New York districts are graded A for teachers but below average on spend per student?"
  • "Pull the Niche profiles for these five districts and compare their proficiency scores."
Use the Apify Actor "parseforge/niche-school-district-profiles-scraper" to read Niche profiles. Input: { "entityType": "school-districts" | "k12-schools" | "colleges" | "graduate-schools" | "places", "state": "<two-letter code>", "nameContains": "<text>", "maxItems": <n> }. It returns overallGrade, a grades map, a stats map with national baselines, parsed rankings, address, phone, website, rating and review count. Call it with the ApifyClient and my APIFY_TOKEN.

Troubleshooting

Why do I need a residential proxy?

Niche is behind HUMAN (PerimeterX). Measured 2026-09-07, plain HTTP with a Chrome TLS fingerprint got 403 with a px-captcha body on every content path over both datacenter and residential exits; a real browser on a residential exit cleared it first try. Datacenter will not work.

Why does the log say it rotated the exit IP?

Because a page came back with the HUMAN block page. A flagged exit stays flagged, so retrying the same URL on it only spends the clock. The Actor takes a new browser on a new proxy session and retries that same URL. Up to six rotations per run, then it stops rather than burning the whole budget.

Why were some URLs skipped as 404?

Niche's sitemaps carry a 2025 timestamp and a share of the slugs in them no longer resolve. Those are skipped on sight and never billed.

Why is a statistic missing?

Niche fills its statistics table by entity type and by what the underlying federal data covers. A college profile carries admissions and cost figures a district profile does not, and a small district may have no proficiency figure published at all. Empty means Niche did not print it.

Why fewer profiles than maxItems?

The state and name filters matched fewer live profiles than you asked for, or the run hit its time budget. The log prints the candidate count after filtering.

FAQ

Question Answer
Which profile types are supported? Five: school districts, K-12 schools, colleges, graduate schools, and places (towns, neighbourhoods and counties).
Do I need a Niche account? No. Only public profile pages are read.
Does it use Niche's API? No. Their robots.txt disallows /api/, so the Actor reads the published sitemap and the profile pages instead.
Can I scrape one specific district? Yes, paste its profile URL into startUrls.
Are the grades letter grades? Yes, normalised: A, A-, B+ and so on, with Niche's screen-reader prefix and "minus" spelling cleaned up.
Do I get the full reviews? You always get the star rating and review count. Tick includeReviews for up to ten review excerpts.
How many profiles per run? Free plan: 10. Paid: up to 1,000,000, bounded by how many live profiles match your filters.
Is this an official Niche product? No. It is unofficial and reads only public pages.

πŸ†˜ 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 Niche.com. It collects only publicly available school, college and place profile data. Review excerpts are written by individuals: do not use them to identify, profile, or target anyone. You are responsible for using the data in compliance with Niche's terms and applicable laws.

What input does the Niche Scraper - School Districts, Schools & Colleges accept?

FieldTypeWhat it doesDefault
entityType string (5 options) Which Niche profile index to read. Each one has its own sitemap and its own set of grades and statistics. school-districts
startUrls array Specific Niche profile pages, for example https://www.niche.com/k12/d/milton-public-schools-ma/. Leave empty to discover them from Niche's own sitemap. not set
state string Two-letter state code, for example ma or ny. Niche puts the state at the end of every profile slug, so this filter is applied to the sitemap and costs nothing. ma
nameContains string Keep only profiles whose URL contains this text, for example springfield or regional. not set
includeMemberSchools boolean Attach the schools listed on the profile, each with its own rating and review count. Districts and colleges have them; places do not. false
includeReviews boolean Attach up to ten published review excerpts with their star ratings. The overall rating and review count are always returned regardless. false
proxyConfiguration object Niche is behind the HUMAN (PerimeterX) challenge. A residential proxy clears it; a datacenter one does not. The Actor rotates the exit IP by itself when a page comes back flagged. {"useApifyProxy":true,"apifyProxyGroups"
maxItems integer How many profiles to return. Free-plan runs return up to 10 as a preview. 25

How much does the Niche Scraper - School Districts, Schools & Colleges cost?

from $0.20 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.0002 to $0.002
School district profile One district: overall Niche grade, every subject grade, the statistics table with national baselines, all rankings, address, phone, website, rating, review count, member schools and area income, rent and home value. $0.0072 to $0.012
K-12 school profile One school profile with its grades, statistics, rankings, contact details, rating and review count. $0.0072 to $0.012
College profile One college profile with its grades, statistics, rankings, contact details, rating and review count. $0.0072 to $0.012
Graduate school profile One graduate school profile with its grades, statistics, rankings, contact details, rating and review count. $0.0072 to $0.012
Place profile One town, neighbourhood or county profile with its grades, statistics, rankings, rating and review count. $0.0072 to $0.012

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Niche Scraper - School Districts, Schools & Colleges API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~niche-school-district-profiles-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "entityType": "school-districts",
    "state": "ma",
    "includeMemberSchools": false,
    "includeReviews": false,
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": [
        "RESIDENTIAL"
      ],
      "apifyProxyCountry": "US"
    }
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "entityType": "school-districts",
  "state": "ma",
  "includeMemberSchools": false,
  "includeReviews": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}

What do users say about the Niche Scraper - School Districts, Schools & Colleges?

No reviews yet. Be the first.

How do I report an issue with the Niche Scraper - School Districts, Schools & Colleges?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Niche Scraper - School Districts, Schools & Colleges on Apify All scrapers