# RateMyProfessors Data Scraper for Schools & Professors (`smartspidering/ratemyprofessors-data-scraper-for-schools-professors`) Actor

Extract structured professor and school data from [RateMyProfessors](https://www.ratemyprofessors.com), including ratings, reviews, difficulty scores, tags, rating distributions, similar professors, and school quality metrics for academic research and analysis.

- **URL**: https://apify.com/smartspidering/ratemyprofessors-data-scraper-for-schools-professors.md
- **Developed by:** [Smart Spidering](https://apify.com/smartspidering) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $22.00 / 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.

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 alt="SmartSpidering" src="https://raw.githubusercontent.com/fahad210/SmartSpidering/refs/heads/master/cover_SS.png">
</p>

## 📚 Rate My Professors Scraper

> 🚀 **Collect professor ratings, reviews, and school data from RateMyProfessors.com in minutes.** Provide direct URL. Export ratings, difficulty, reviews, and department info. No coding, no API keys.

> 🕒 **Last updated:** 2026-05-24 · **📊 20+ fields** per professor · **⭐ Ratings + reviews** · **🚫 No auth** required

The **Rate My Professors Scraper** collects professor and school data from RateMyProfessors.com, returning **20+ fields per record**: professor name, overall quality rating, difficulty level, number of ratings, department, school name, individual reviews with text, class, grade, and tags. Runs support up to 1,000,000 records on a paid plan.

The Actor supports Direct link: direct RateMyProfessors URL. Results include both aggregate professor metrics and individual student reviews.

| 🎯 Target Audience | 💡 Primary Use Cases |
| --- | --- |
| Students, academic researchers, educational institutions, ed-tech platforms, data journalists, curriculum analysts | Course selection, teaching quality analysis, department benchmarking, academic research, institutional assessment |

---

### 📋 What the Rate My Professors Scraper does

Input mode:
- 🔗 **URL mode.** Paste a direct RateMyProfessors professor or school page URL. You can provide url for either professor(e.g., https://www.ratemyprofessors.com/professor/12345) or school page (e.g., https://www.ratemyprofessors.com/school/938) or search results page (e.g., https://www.ratemyprofessors.com/search/professors/?q=john , https://www.ratemyprofessors.com/search/schools?q=mit, https://www.ratemyprofessors.com/search/professors/580?q=john).


Each professor record includes name, overall quality rating, difficulty level, would-take-again percentage, number of ratings, department, school name, individual reviews with text, class name, grade received, attendance required flag, and quality/difficulty tags.

> 💡 **Why it matters:** manually browsing RateMyProfessors for course decisions or teaching-quality research means clicking through profiles one by one. This Actor exports structured academic data at scale, ready for analysis, dashboards, or ed-tech integrations.

---

### 🎬 Full Demo

*🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset.*

---

### ⚙️ Input

| Input | Type | Default | Behavior |
| --- | --- | --- | --- |
| `maxItems` | integer | `10` | Max results. Free: up to 100. Paid: up to 1,000,000. |
| `startUrl` | string | `""` | Direct RateMyProfessors URL.|

---

### 📊 Output

Each record contains **20+ fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Professor Schema

| Field | Type | Example |
| --- | --- | --- |
| 👨‍🏫 `professor_name` | string | `"Johnny Pang"` |
| 🆔 `professor_id` | string | `"440465"` |
| 🏫 `school_name` | string | `"University of California Los Angeles (UCLA)"` |
| 🆔 `school_id` | string | `"1075"` |
| 📂 `department` | string | `"Chemistry"` |
| ⭐ `overall_quality_rating` | string | `"3.5"` |
| 🔢 `number_of_ratings` | number | `8` |
| 🔄 `would_take_again_percentage` | string | `"0%"` |
| 📊 `level_of_difficulty` | string | `"4.0"` |
| 🏷️ `Type` | string | `"Professor"` |
| 📝 `description` | string | `""` |
| 📈 `rating_distribution` | array | `[{"rating": "5", "label": "Awesome", "count": "3"}]` |
| 🤝 `similar_professors` | array | `[{"professor_name": "Christina Bauer", "rating": "4.8"}]` |
| 💬 `reviews` | array | `[{"course": "CHEM14BL", "comment": "Do not take..."}]` |
| 🔗 `professor_url` | string | `"https://www.ratemyprofessors.com/professor/440465"` |
| 🔗 `school_url` | string | `"https://www.ratemyprofessors.com/school/1075"` |
| 🕒 `scraped_timestamp` | string | `"2026-05-24-10:00:00"` |

#### 🏫 School Schema

| Field | Type | Example |
| --- | --- | --- |
| 🏫 `school_name` | string | `"University of California Los Angeles (UCLA)"` |
| 🆔 `school_id` | string | `"1075"` |
| 🔗 `school_url` | string | `"https://www.ratemyprofessors.com/school/1075"` |
| ⭐ `overall_quality_rating` | string | `"4.1"` |
| 🔢 `number_of_ratings` | number | `197` |
| 🏷️ `Type` | string | `"School"` |
| 💬 `reviews` | array | `[{"date": "Apr 30th, 2026", "overallRating": "4.5", "categoryRatings": [{"category": "Reputation", "rating": 5}], "comment": "Incredible school!"}]` |
| 🕒 `scraped_timestamp` | string | `"2026-05-24-10:00:00"` |

#### 📦 Sample record (Professor)
```json
{
  "professor_name": "John Dittmann",
  "school_name": "The University of Tennessee Knoxville",
  "school_id": "1385",
  "professor_id": "2220671",
  "overall_quality_rating": "4.5",
  "number_of_ratings": "8",
  "would_take_again_percentage": "88%",
  "level_of_difficulty": "2.6",
  "rating_distribution": [
    {"rating": "5", "label": "Awesome", "count": "7"},
    {"rating": "4", "label": "Great", "count": "0"},
    {"rating": "3", "label": "Good", "count": "0"},
    {"rating": "2", "label": "OK", "count": "0"},
    {"rating": "1", "label": "Awful", "count": "1"}
  ],
  "similar_professors": [
    {"professor_name": "Adam Spannbauer", "professor_url": "https://www.ratemyprofessors.com/professor/2775421", "professor_id": "2775421", "rating": "5.00"},
    {"professor_name": "Ben Skipper", "professor_url": "https://www.ratemyprofessors.com/professor/3122392", "professor_id": "3122392", "rating": "5.00"},
    {"professor_name": "Christopher Hickey", "professor_url": "https://www.ratemyprofessors.com/professor/3156825", "professor_id": "3156825", "rating": "5.00"}
  ],
  "reviews": [
    {
      "course": "SCM460",
      "date": "Aug 26th, 2025",
      "qualityRating": 5,
      "difficultyRating": 2,
      "forCredit": "No",
      "attendance": "mandatory",
      "wouldTakeAgain": 1,
      "grade": "A",
      "comment": "He is just strict about attendance but everything else is good if you focus; it's an easy A",
      "tags": ["Amazing lectures ", "Inspirational", "Respected"],
      "onlineClass": "No"
    }
  ],
  "professor_url": "https://www.ratemyprofessors.com/professor/2220671",
  "Type": "Professor",
  "school_url": "https://www.ratemyprofessors.com/school/1385",
  "scraped_timestamp": "2026-05-24-14:53:11"
}
````

#### 📦 Sample record (School)

```json
{
  "school_name": "Paul Mitchell The School Sherman Oaks",
  "school_id": "18933",
  "school_url": "https://www.ratemyprofessors.com/school/18933",
  "overall_quality_rating": "4.0",
  "number_of_ratings": "1",
  "Type": "School",
  "reviews": [
    {
      "date": "Mar 1st, 2023",
      "comment": "Paul Mitchell the School Sherman’s oaks is a great school to learn cosmetology, barbering and esthetician. The location is alright and parking is good but there’s no food opportunities. The lunch area in the school is very small with two refrigerators and one microwave. The staff contributes to the schools aura.",
      "categoryRatings": [
        {
          "category": "Reputation",
          "rating": 5
        },
        {
          "category": "Location",
          "rating": 3
        },
        {
          "category": "Opportunities",
          "rating": 5
        },
        {
          "category": "Facilities",
          "rating": 3
        },
        {
          "category": "Internet",
          "rating": 3
        },
        {
          "category": "Food",
          "rating": 2
        },
        {
          "category": "Clubs",
          "rating": 5
        },
        {
          "category": "Social",
          "rating": 5
        },
        {
          "category": "Happiness",
          "rating": 5
        },
        {
          "category": "Safety",
          "rating": 4
        }
      ],
      "overallRating": "4.0"
    }
  ],
  "scraped_timestamp": "2026-05-24-14:02:48"
}
```

***

### ✨ Why choose this Actor

| | Capability |
| --- | --- |
| ⭐ | **Full rating data.** Overall quality, difficulty, would-take-again, and individual reviews. |
| 📝 | **Review details.** Text, class name, grade received, attendance, and tags per review. |
| ⚡ | **Scalable.** From single-professor lookups to full department or school sweeps. |
| 🚫 | **No authentication.** No RateMyProfessors API key needed. |

> 📊 RateMyProfessors has over 19 million student ratings across 6,000+ schools. Structured access to this data powers every course-selection, teaching-quality, and institutional-analysis workflow.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
| --- | --- | --- | --- | --- | --- |
| **⭐ Rate My Professors Scraper** *(this Actor)* | $5 free credit, then pay-per-use | Any RMP professor/school | **Live per run** | name, school, URL | ⚡ 2 min |
| Manual RMP browsing | Free | One profile at a time | Manual | RMP UI | 🕒 Hours per department |
| RMP API (unofficial) | Free, rate-limited | GraphQL | Rate-limited | Many | ⏳ Hours of dev work |

Pick this Actor when you want RateMyProfessors data on demand, without writing GraphQL queries or browsing profiles one by one.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the Rate My Professors Scraper(https://apify.com/smartspidering/rate-my-professors-schools-scraper).
3. 🎯 **Set input.** Paste a URL. Set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

#### 🎓 Students & Advisors

- Compare professors before course registration
- Find the highest-rated instructors by department
- Check difficulty levels and grade distributions
- Read recent reviews for up-to-date feedback

#### 📊 Academic Researchers

- Study teaching quality across departments
- Analyze student sentiment by discipline
- Build longitudinal datasets of professor ratings
- Compare institutional teaching quality

#### 🏫 Educational Institutions

- Benchmark departments against peer schools
- Identify teaching-quality trends over time
- Support faculty development with data
- Monitor institutional reputation metrics

#### 💻 Ed-Tech Platforms

- Enrich course recommendation engines with ratings
- Build professor comparison features
- Add teaching-quality signals to enrollment tools
- Power student decision-support dashboards

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

### 💰 How much does it cost?

Apify gives you **$5 in free monthly credits** on the [Apify Free plan](https://apify.com/pricing), enough to test Rate My Professors Scraper and pull a real sample dataset. For ongoing usage:

Pay-Per-Event pricing means you only pay for what you actually use. Failed runs are never charged. See the **Pricing** tab on this Actor's page for exact event prices.

### 💡 Tips for using Rate My Professors Scraper

- **Start with a small `maxItems`** (3-10) to validate output format before running larger jobs.
- **Use Apify Schedules** to run Rate My Professors Scraper on a recurring basis and keep your dataset fresh.
- **Export via Integrations**: Apify connects to Google Sheets, Airbyte, Make, Zapier, and direct webhooks — pipe your data anywhere.
- **Monitor with webhooks**: trigger downstream workflows the moment a run finishes.
- **Re-run failed items**: if any individual records error out, re-run with their inputs only. Failed events are not charged.

### ⚖️ Is it legal to use Rate My Professors Scraper?

Yes. Rate My Professors Scraper only collects publicly available data. Web scraping public data has been confirmed as legal by US courts (see [hiQ Labs v. LinkedIn](https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn)) and is widely used for research, market analysis, and business intelligence.

However, you are responsible for:

- Respecting the source website's Terms of Service.
- Complying with GDPR, CCPA, and other applicable data-protection laws when personal data is involved.
- Not republishing copyrighted content without permission.

If you have specific compliance concerns, consult your legal team. See the [Apify legal docs](https://docs.apify.com/legal) for more.

### 🔌 Automating Rate My Professors Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Semester-start pulls give students fresh data for course registration.

### 🔌 Integrate with any app

Rate My Professors Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe academic data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

***

### 🔗 Recommended Actors

- [**🍺 Kijiji.ca Scraper**](https://apify.com/smartspidering/kijiji-ca-scraper) - Scrape and extract kijiji.ca products data.

# Actor input Schema

## `maxItems` (type: `integer`):

The maximum number of professors or schools to scrape.

## `startUrl` (type: `string`):

Provide a direct URL to a Rate My Professors search page. Examples: https://www.ratemyprofessors.com/search/professors/?q=john or https://www.ratemyprofessors.com/search/schools?q=mit or https://www.ratemyprofessors.com/search/professors/580?q=john or https://www.ratemyprofessors.com/professor/2220671 or https://www.ratemyprofessors.com/school/580

## Actor input object example

```json
{
  "maxItems": 10,
  "startUrl": "https://www.ratemyprofessors.com/school/938"
}
```

# 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 = {
    "maxItems": 10,
    "startUrl": "https://www.ratemyprofessors.com/school/938"
};

// Run the Actor and wait for it to finish
const run = await client.actor("smartspidering/ratemyprofessors-data-scraper-for-schools-professors").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 = {
    "maxItems": 10,
    "startUrl": "https://www.ratemyprofessors.com/school/938",
}

# Run the Actor and wait for it to finish
run = client.actor("smartspidering/ratemyprofessors-data-scraper-for-schools-professors").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 '{
  "maxItems": 10,
  "startUrl": "https://www.ratemyprofessors.com/school/938"
}' |
apify call smartspidering/ratemyprofessors-data-scraper-for-schools-professors --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RateMyProfessors Data Scraper for Schools & Professors",
        "description": "Extract structured professor and school data from [RateMyProfessors](https://www.ratemyprofessors.com), including ratings, reviews, difficulty scores, tags, rating distributions, similar professors, and school quality metrics for academic research and analysis.",
        "version": "0.0",
        "x-build-id": "VzG0Z83tDPxyBb7La"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/smartspidering~ratemyprofessors-data-scraper-for-schools-professors/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-smartspidering-ratemyprofessors-data-scraper-for-schools-professors",
                "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/smartspidering~ratemyprofessors-data-scraper-for-schools-professors/runs": {
            "post": {
                "operationId": "runs-sync-smartspidering-ratemyprofessors-data-scraper-for-schools-professors",
                "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/smartspidering~ratemyprofessors-data-scraper-for-schools-professors/run-sync": {
            "post": {
                "operationId": "run-sync-smartspidering-ratemyprofessors-data-scraper-for-schools-professors",
                "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": [
                    "startUrl"
                ],
                "properties": {
                    "maxItems": {
                        "title": "Number of professors or schools",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The maximum number of professors or schools to scrape.",
                        "default": 10
                    },
                    "startUrl": {
                        "title": "Direct URL",
                        "type": "string",
                        "description": "Provide a direct URL to a Rate My Professors search page. Examples: https://www.ratemyprofessors.com/search/professors/?q=john or https://www.ratemyprofessors.com/search/schools?q=mit or https://www.ratemyprofessors.com/search/professors/580?q=john or https://www.ratemyprofessors.com/professor/2220671 or https://www.ratemyprofessors.com/school/580"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
