# Zillow Nearby Schools Scraper (`axesso_data/zillow-nearby-schools-scraper`) Actor

The Zillow Nearby Schools Scraper retrieves real-time data on schools near any property listed on Zillow using ZPID or URL. Access school names, ratings, grade levels, types, and distances to support real estate research, school district analysis, and property evaluation.

- **URL**: https://apify.com/axesso\_data/zillow-nearby-schools-scraper.md
- **Developed by:** [AxCrawler](https://apify.com/axesso_data) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### How does Zillow Nearby Schools Scraper work?

The Zillow Nearby Schools Scraper retrieves real-time data on schools located near a specific property listed on Zillow, using either the property's ZPID or its URL. The data extracted includes school name, rating, grade levels served, school level, type, and distance from the property.

This Actor performs live queries directly to Zillow ensuring that all data returned is current and accurate at the time of the request. There is no caching involved, so every invocation retrieves fresh data.

The extraction process involves receiving input parameters for one or more properties, executing the data retrieval for each property, and returning structured JSON output containing the list of nearby schools.

### Input data

Input data must be provided in JSON format and must contain one mandatory array field "input". Each item in the array represents a request for schools near a specific property and can include the following fields:

- `url` (Optional): Property details URL, e.g., https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016\_zpid/.
- `zpid` (Optional): The zpid can be extracted from the searching endpoints (/search, /search\_url…), or from a property's URL.

Either `url` or `zpid` must be provided to identify the property for which nearby schools should be retrieved. Multiple properties can be queried in a single run by providing multiple entries in the "input" array.

#### Example input

```json
{
  "input": [
    {
      "url": "https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016_zpid/"
    },
    {
      "zpid": "28253016"
    }
  ]
}
```

### Output data

```json
{
  "schools": [
    {
      "assigned": null,
      "distance": 1.4,
      "grades": "PK-5",
      "isAssigned": null,
      "level": "Primary",
      "link": "https://www.greatschools.org/georgia/thomasville/1700-Harper-Elementary-School/",
      "name": "Harper Elementary School",
      "rating": 3,
      "size": null,
      "studentsPerTeacher": null,
      "totalCount": null,
      "type": "Public"
    },
    {
      "assigned": null,
      "distance": 2.6,
      "grades": "6-8",
      "isAssigned": null,
      "level": "Middle",
      "link": "https://www.greatschools.org/georgia/thomasville/1702-Macintyre-Park-Middle-School/",
      "name": "Macintyre Park Middle School",
      "rating": 4,
      "size": null,
      "studentsPerTeacher": null,
      "totalCount": null,
      "type": "Public"
    },
    {
      "assigned": null,
      "distance": 2.5,
      "grades": "9-12",
      "isAssigned": null,
      "level": "High",
      "link": "https://www.greatschools.org/georgia/thomasville/1699-Thomasville-High-School/",
      "name": "Thomasville High School",
      "rating": 4,
      "size": null,
      "studentsPerTeacher": null,
      "totalCount": null,
      "type": "Public"
    }
  ]
}
```

### How much does Zillow Nearby Schools Scraper cost?

Estimating the cost for this Actor depends on the volume of data and number of nearby schools requests. It is recommended to perform a test run with a small input sample to determine the cost for your specific requirements. The cost can then be extrapolated based on your total expected usage.

### What to consider when using this Actor?

This Actor integrates the full lifecycle of web data extraction ensuring stability and reliability:

1. **Proxy Rotation:** Uses a large proxy pool to avoid blocks by Zillow, ensuring smooth data retrieval.

2. **Geo Targeting:** Determines appropriate proxy location based on the provided URLs or property locations to minimize geo-restriction issues.

3. **Captcha and Blocking Handling:** Automatically manages captchas or temporary access blocks without user intervention.

4. **Stability and Reliability:** Designed to handle large scale requests with error handling and retries for consistent and dependable operation.

### Where else you can find Axesso - Data Service solutions?

Axesso APIs and Actors are available through the Axesso own [API Portal](https://axesso.developer.azure-api.net/apis) and on [RapidAPI](https://rapidapi.com/search?term=axesso\&sortBy=ByRelevance). Our track record includes thousands of subscribers and stable service for over 5 years.

### Use cases for our Axesso Actors

1. **Market Research:** Gather detailed school data including ratings, grade levels, and distances to support neighborhood insights.

2. **Price Monitoring:** Combine nearby school quality with price and tax history for specific properties.

3. **Inventory Management:** Automate the collection of property listings alongside their associated school information.

4. **Property Valuation:** Use nearby school ratings and proximity as inputs to assess property values.

5. **Agent Insights:** Retrieve school data to support agent and brokerage conversations with buyers.

6. **Content Aggregation:** Collect school and property data for real estate websites or applications.

7. **Lead Generation:** Extract school proximity information relevant to buyer outreach for families.

8. **Competitive Analysis:** Monitor market trends and competitor listings by school district quality.

9. **Data Enrichment:** Enhance existing real estate databases with comprehensive, live nearby school data.

# Actor input Schema

## `input` (type: `array`):

List of inputs, each entry refers to one request to be executed. Full list of valid parameters can be found in the README tab.

## `maxConcurrency` (type: `integer`):

Number of parallel requests to the Axesso API. Defaults to 3.

## Actor input object example

```json
{
  "input": [
    {
      "url": "https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016_zpid/"
    },
    {
      "zpid": "28253016"
    }
  ],
  "maxConcurrency": 3
}
```

# Actor output Schema

## `results` (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 = {
    "input": [
        {
            "url": "https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016_zpid/"
        },
        {
            "zpid": "28253016"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("axesso_data/zillow-nearby-schools-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 = { "input": [
        { "url": "https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016_zpid/" },
        { "zpid": "28253016" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("axesso_data/zillow-nearby-schools-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 '{
  "input": [
    {
      "url": "https://www.zillow.com/homedetails/15626-Laurel-Heights-Dr-Houston-TX-77084/28253016_zpid/"
    },
    {
      "zpid": "28253016"
    }
  ]
}' |
apify call axesso_data/zillow-nearby-schools-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=axesso_data/zillow-nearby-schools-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TjRSyCbj0unDEMIeG/builds/RD4bJyoZd3uohuE63/openapi.json
