# Rate My Professors & Schools  Scraper - Low-cost💲🔥🎓👨‍🏫 (`delectable_incubator/rate-my-professors-schools-scraper-low-cost`) Actor

🎓 Extract professor and school listings from Rate My Professors search results. Collect professor names, universities, departments, profile URLs, ratings, review counts, and academic details. Ideal for education research, professor discovery, university analysis, , and reputation monitoring 📊👨‍🏫

- **URL**: https://apify.com/delectable\_incubator/rate-my-professors-schools-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** Lead generation, Automation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

<p align="center">
  <img src="https://i.ibb.co/jkNS73wX/readme.png" alt="Rate My Professors & Schools Scraper" width="100%">
</p>

---

## 🎓⭐ Rate My Professors & Schools Scraper | Bulk Professor & School Scraper | Apify Actor

### 🚀 Extract Rate My Professors Data in Seconds (No Code)

The **Rate My Professors & Schools Scraper** is a powerful, scalable, and SEO-optimized **Apify Actor** designed to extract professor and school data directly from **RateMyProfessors.com**.

Whether you're conducting academic research, comparing universities, analyzing professor ratings, building AI datasets, monitoring education trends, or collecting structured education data, this scraper delivers clean, export-ready datasets with no coding required.

---

## 🔥 Why This Rate My Professors Scraper?

✔ Best Rate My Professors scraper on Apify

✔ Supports **Bulk URL Scraping** (multiple search URLs)

✔ Scrape both **Professors & Schools**

✔ High-speed extraction engine

✔ Clean structured JSON / CSV / Excel output

✔ Perfect for education research & AI datasets

✔ Enterprise-ready scalability

✔ No coding required

---

## 🎯 What This Scraper Does

This Apify Actor automatically extracts structured information from **RateMyProfessors search pages**.

#### 📌 Core Features

✅ Scrape professor search results

✅ Scrape school search results

✅ Bulk URL support (SEO BOOST 🚀)

✅ Mix professor & school URLs in the same run

✅ Automatic pagination

✅ Limit results per search URL

✅ Extract ratings & profile information

✅ Clean structured datasets

✅ Fast cloud execution on Apify

---

## ⚡ Input Configuration

### 🔥 BULK URL MODE (SEO BOOST 🚀)

````

{
"urls": \[
"https://www.ratemyprofessors.com/search/professors?q=math",
"https://www.ratemyprofessors.com/search/professors?q=biology",
"https://www.ratemyprofessors.com/search/professors?q=computer+science",
"https://www.ratemyprofessors.com/search/schools?q=california",
"https://www.ratemyprofessors.com/search/schools?q=texas"
],
"maxItemsPerUrl": 100
}

```

**maxItemsPerUrl**

* `0` = Unlimited
* Any positive number = Maximum records per search URL

---

## 📊 Extracted Professor Data

| Field          | Description          |
| -------------- | -------------------- |
| professorId    | Unique professor ID  |
| name           | Professor name       |
| school         | University / School  |
| department     | Academic department  |
| quality        | Overall rating       |
| ratingsCount   | Number of ratings    |
| wouldTakeAgain | Would take again (%) |
| difficulty     | Difficulty score     |
| profileUrl     | Professor profile    |
| sourceUrl      | Original search URL  |

---

## 🏫 Extracted School Data

| Field        | Description           |
| ------------ | --------------------- |
| schoolId     | Unique school ID      |
| name         | School name           |
| location     | School location       |
| quality      | Overall school rating |
| ratingsCount | Number of ratings     |
| profileUrl   | School page           |
| sourceUrl    | Original search URL   |

---

## 💡 Use Cases

Perfect for:

🎓 University research

⭐ Professor rating analysis

📊 Education market intelligence

🤖 AI training datasets

🏫 School comparison

📈 Academic trend monitoring

🔬 Research projects

📚 Higher education analytics

🧠 Student experience analysis

---

## 🚀 Key Features

⚡ Bulk URL scraping

👨‍🏫 Professor search support

🏫 School search support

📌 Automatic pagination

📊 Structured datasets

💾 JSON / CSV / Excel exports

⚙️ Cloud execution

🔁 Stable extraction engine

🚀 Fast scraping performance

---

## 📤 Output Formats

✔ JSON

✔ CSV

✔ Excel (XLSX)

✔ XML

✔ HTML

---

## 📦 Example Output

```

{
"resultType": "professor",
"professorId": "983152",
"name": "John Cole",
"department": "Computer Science",
"school": "The University of Texas at Dallas",
"quality": "3.1",
"ratingsCount": "204",
"wouldTakeAgain": "47%",
"difficulty": "3.4",
"profileUrl": "https://www.ratemyprofessors.com/professor/983152",
"sourceUrl": "https://www.ratemyprofessors.com/search/professors?q=john"
}

````

---

## 🔥 Why This is the BEST Rate My Professors Scraper on Apify?

✔ Optimized for Apify search ranking

✔ Bulk URL support (rare feature)

✔ Scrapes Professors & Schools

✔ Enterprise-ready architecture

✔ High-speed scraping engine

✔ Clean structured output

✔ Ideal for education analytics

✔ Perfect for AI & research datasets

---

## 💸 Pricing

This scraper uses a **pay-per-result** pricing model.

You are only charged for successfully extracted records.

💳 **$7.99 / 1,000 results**µ

---

## ❓ FAQ

#### Can I scrape multiple URLs at once?

Yes. Simply add as many professor or school search URLs as you like.

#### Can I mix professor and school searches?

Yes. Both types can be scraped in a single run.

#### Can I limit the number of results?

Yes. Use **maxItemsPerUrl**.

Set **0** for unlimited scraping.

#### Does it support pagination?

Yes. Pagination is handled automatically.

#### Can I export the data?

Yes.

Supported formats include:

* JSON
* CSV
* Excel
* XML
* HTML

#### Is coding required?

No.

Everything runs directly on Apify with no coding.

---

## ⚠️ Disclaimer

This scraper is an independent automation tool and is **not affiliated with, endorsed by, or sponsored by RateMyProfessors.com**.

---

## 🔗 Related Actors

We are building the complete **PrimeScrape Education Intelligence Suite**.

More education scraping tools coming soon 🚀

---

## 🌍 PrimeScrape Ecosystem

Built for large-scale data extraction, automation, AI datasets, market intelligence, and research.

📊 Education datasets

🎓 University intelligence

⭐ Professor analytics

🤖 AI training data

📈 Academic market research

⚙️ Automation pipelines

🌐 Cloud scraping infrastructure

---

## 📬 Support

⭐⭐⭐⭐⭐

If you enjoy this scraper, please leave a 5-star review.

📩 Need custom scraping solutions or enterprise features?

Contact **PrimeScrape** through Apify.

# Actor input Schema

## `urls` (type: `array`):

One or more Rate My Professors search URLs (professors and/or schools). Pagination via 'Show More' is handled automatically.

Professor examples:
• https://www.ratemyprofessors.com/search/professors?q=math
• https://www.ratemyprofessors.com/search/professors?q=biology

School examples:
• https://www.ratemyprofessors.com/search/schools?q=california
• https://www.ratemyprofessors.com/search/schools?q=sa
## `maxItemsPerUrl` (type: `integer`):

Maximum number of results to collect per search URL. Set to 0 for no limit.

## Actor input object example

```json
{
  "urls": [
    "https://www.ratemyprofessors.com/search/professors?q=math",
    "https://www.ratemyprofessors.com/search/schools?q=california"
  ],
  "maxItemsPerUrl": 20
}
````

# Actor output Schema

## `professors` (type: `string`):

No description

## `schools` (type: `string`):

No description

## `all_results` (type: `string`):

No description

## `by_source` (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 = {
    "urls": [
        "https://www.ratemyprofessors.com/search/professors?q=math",
        "https://www.ratemyprofessors.com/search/schools?q=california"
    ],
    "maxItemsPerUrl": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/rate-my-professors-schools-scraper-low-cost").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 = {
    "urls": [
        "https://www.ratemyprofessors.com/search/professors?q=math",
        "https://www.ratemyprofessors.com/search/schools?q=california",
    ],
    "maxItemsPerUrl": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/rate-my-professors-schools-scraper-low-cost").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 '{
  "urls": [
    "https://www.ratemyprofessors.com/search/professors?q=math",
    "https://www.ratemyprofessors.com/search/schools?q=california"
  ],
  "maxItemsPerUrl": 20
}' |
apify call delectable_incubator/rate-my-professors-schools-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=delectable_incubator/rate-my-professors-schools-scraper-low-cost",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rate My Professors & Schools  Scraper - Low-cost💲🔥🎓👨‍🏫",
        "description": "🎓 Extract professor and school listings from Rate My Professors search results. Collect professor names, universities, departments, profile URLs, ratings, review counts, and academic details. Ideal for education research, professor discovery, university analysis, , and reputation monitoring 📊👨‍🏫",
        "version": "0.0",
        "x-build-id": "zRZpO63KHGdjdWWE1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/delectable_incubator~rate-my-professors-schools-scraper-low-cost/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-delectable_incubator-rate-my-professors-schools-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/delectable_incubator~rate-my-professors-schools-scraper-low-cost/runs": {
            "post": {
                "operationId": "runs-sync-delectable_incubator-rate-my-professors-schools-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/delectable_incubator~rate-my-professors-schools-scraper-low-cost/run-sync": {
            "post": {
                "operationId": "run-sync-delectable_incubator-rate-my-professors-schools-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "One or more Rate My Professors search URLs (professors and/or schools). Pagination via 'Show More' is handled automatically.\n\nProfessor examples:\n• https://www.ratemyprofessors.com/search/professors?q=math\n• https://www.ratemyprofessors.com/search/professors?q=biology\n\nSchool examples:\n• https://www.ratemyprofessors.com/search/schools?q=california\n• https://www.ratemyprofessors.com/search/schools?q=sa",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "https://www.ratemyprofessors.com/search/professors?q=math",
                            "https://www.ratemyprofessors.com/search/schools?q=california"
                        ]
                    },
                    "maxItemsPerUrl": {
                        "title": "Max Items per URL",
                        "type": "integer",
                        "description": "Maximum number of results to collect per search URL. Set to 0 for no limit.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
