Discover/RateMyProfessors API
live

RateMyProfessors APIratemyprofessors.com

Access professor ratings, reviews, difficulty scores, and student tags from RateMyProfessors.com. Search by name, filter by school, and fetch full profiles.

Endpoint health
verified 5d ago
search_professors
get_professor_details
get_professor_by_name
3/3 passing latest checkself-healing
Endpoints
3
Updated
21d ago

What is the RateMyProfessors API?

This API exposes professor data from RateMyProfessors.com across 3 endpoints, covering aggregate scores, individual student reviews, course lists, and tag summaries. The search_professors endpoint lets you query by professor name and optionally narrow results to a specific school, while get_professor_details returns the full profile including recent comments, difficulty ratings, and top student-generated tags.

Try it
Maximum number of results to return (up to 250)
Professor name to search for
Optional school ID (base64-encoded) to filter results by a specific school
api.parse.bot/scraper/32ad44ea-e63f-4810-a4fe-10e409452bae/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/32ad44ea-e63f-4810-a4fe-10e409452bae/search_professors?limit=5&query=Smith' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ratemyprofessors-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: RateMyProfessors SDK — search, drill-down, lookup by name, typed errors."""
from parse_apis.ratemyprofessors_api import RateMyProfessors, ProfessorNotFound

client = RateMyProfessors()

# Search professors by name — limit= caps total items fetched.
for prof in client.professorsummaries.search(query="Smith", limit=3):
    print(prof.full_name, prof.school_name, prof.avg_rating)

# Drill-down: take one result, then fetch full details via .details()
summary = client.professorsummaries.search(query="Johnson", limit=1).first()
if summary:
    detail = summary.details()
    print(detail.full_name, detail.department, detail.school_name)
    print(detail.aggregate_ratings.overall_avg_rating, detail.aggregate_ratings.avg_difficulty_rating)
    for review in detail.recent_reviews[:2]:
        print(review.course_name, review.quality_rating, review.comment[:80])

# Lookup professor by name directly (convenience — searches then fetches best match)
prof = client.professors.lookup_by_name(name="John Smith")
print(prof.full_name, prof.department, prof.aggregate_ratings.total_num_ratings)

# Direct fetch by known ID
prof = client.professors.get(professor_id="VGVhY2hlci0xNjA4NzAw")
print(prof.full_name, prof.aggregate_ratings.total_num_ratings)
for course in prof.courses_taught[:3]:
    print(course.course_code, course.num_ratings)

# Typed error handling for a non-existent professor
try:
    client.professors.get(professor_id="9999999")
except ProfessorNotFound as exc:
    print(f"Not found: {exc}")

print("exercised: professorsummaries.search / summary.details / professors.lookup_by_name / professors.get / ProfessorNotFound")
All endpoints · 3 totalmissing one? ·

Search for professors by name and optionally filter by school. Returns a list of matching professors with basic rating info. The total field reports the server-side match count (capped at 10000); use limit to control how many results are returned per call.

Input
ParamTypeDescription
limitintegerMaximum number of results to return (up to 250)
queryrequiredstringProfessor name to search for
school_idstringOptional school ID (base64-encoded) to filter results by a specific school
Response
{
  "type": "object",
  "fields": {
    "total": "integer total number of matching professors (server capped at 10000)",
    "professors": "array of professor summary objects with professor_id, full_name, legacy_id, department, school_name, avg_rating, num_ratings"
  },
  "sample": {
    "data": {
      "total": 10000,
      "professors": [
        {
          "full_name": "Wayne Smith",
          "legacy_id": 858279,
          "avg_rating": 2.9,
          "department": "Business",
          "num_ratings": 301,
          "school_name": "California State University - Northridge",
          "professor_id": "VGVhY2hlci04NTgyNzk="
        }
      ]
    },
    "status": "success"
  }
}

About the RateMyProfessors API

What the API Returns

The three endpoints cover the core professor data on RateMyProfessors.com. search_professors accepts a required query string and an optional school_id (base64-encoded), returning up to 250 matches per call. Each result includes professor_id, full_name, department, school_name, avg_rating, and num_ratings — enough to identify and compare professors before fetching a full profile.

Professor Profiles

get_professor_details accepts either a base64-encoded professor ID or a legacy numeric ID (auto-converted internally) and returns the complete profile. The aggregate_ratings object contains overall_avg_rating, total_num_ratings, would_take_again_percent, and avg_difficulty_rating. The courses_taught array lists each course code alongside how many ratings it has, and top_rating_tags shows student-generated labels with their occurrence counts.

Reviews and Convenience Lookup

The recent_reviews array on both detail endpoints includes per-review fields: comment, date, course_name, quality_rating, clarity_rating, difficulty_rating, would_take_again, and grad (indicating graduate-level). The third endpoint, get_professor_by_name, combines a search and a profile fetch into a single call — useful when you have a name but not an ID. It returns the full profile of the best match, or a stale_input signal when no match is found.

Reliability & maintenanceVerified

The RateMyProfessors API is a managed, monitored endpoint for ratemyprofessors.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ratemyprofessors.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ratemyprofessors.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a course-selection tool that surfaces a professor's avg_difficulty_rating and would_take_again_percent alongside the syllabus.
  • Aggregate top_rating_tags across a department to identify teaching patterns or common student concerns.
  • Track how a professor's overall_avg_rating and total_num_ratings change over academic terms.
  • Filter recent_reviews by course_name to show students reviews specific to the class they are considering.
  • Identify which courses in courses_taught have the most review volume for deeper per-course analysis.
  • Cross-reference school_id filtering in search_professors to build a school-specific professor directory with ratings.
  • Export comment text from recent_reviews for sentiment analysis on teaching quality by department.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does RateMyProfessors.com have an official public developer API?+
No. RateMyProfessors.com does not publish a documented public API or developer program for third-party access.
What does `get_professor_details` return that `search_professors` does not?+
search_professors returns summary-level fields: professor_id, full_name, department, school_name, avg_rating, and num_ratings. get_professor_details adds the full aggregate_ratings object, the courses_taught array with per-course review counts, top_rating_tags, and the recent_reviews array with individual student comments and per-review scores.
How does school filtering work in the search endpoint?+
The school_id parameter in search_professors and get_professor_by_name is a base64-encoded school identifier. When supplied, results are scoped to that institution. If omitted, the search runs across all schools in the RateMyProfessors database.
How many reviews does `recent_reviews` include per professor?+
The API returns a recent subset of reviews rather than the full historical review list. The exact count varies by professor. Full historical pagination of all reviews is not currently exposed. The API covers aggregate scores, course-level counts, and a recent review slice. You can fork it on Parse and revise to add a paginated reviews endpoint if you need the complete review history.
Can I look up schools, get school-level ratings, or search for schools by name?+
Not currently. The API covers professor search, professor profiles, and review data. School lookup or school-level aggregate ratings are not included as standalone endpoints. You can fork it on Parse and revise to add a school search or school details endpoint.
Page content last updated . Spec covers 3 endpoints from ratemyprofessors.com.
Related APIs in EducationSee all →
superprof.com API
Search for private tutors by subject and location, then access their detailed profiles with reviews, qualifications, pricing, and availability. Discover top-rated tutors featured on the platform to find the perfect match for your learning needs.
niche.com API
Search and retrieve data on K-12 schools and colleges from Niche.com, including rankings, report card grades, stats, and user reviews.
rateyourmusic.com API
Search for albums, artists, and genres to retrieve detailed information including release dates, ratings, and chart rankings from Rate Your Music. Browse music charts and explore genre-specific data to discover trends across the catalog.
timeshighereducation.com API
Access Times Higher Education data including global university rankings across dozens of subject areas, detailed university profiles with scoring breakdowns, academic job listings, and site-wide search for articles and university pages.
metacritic.com API
Search for games, movies, and TV shows, then retrieve detailed metadata, critic and user reviews, and ranked lists from Metacritic. Access comprehensive rating information and review data to discover top-rated entertainment content across all media types.
resellerratings.com API
Search for trusted retailers and explore thousands of verified store reviews, ratings, and detailed seller information to make informed shopping decisions. Browse product categories, read reviewer profiles, and access business highlights to compare stores before you buy.
wyzant.com API
Search for qualified tutors on Wyzant, view their detailed profiles, ratings, reviews, and expert answers to find the perfect match for your learning needs. Browse trending subjects, get subject suggestions, and compare tutors based on their expertise and student feedback all in one place.
ratethelandlord.org API
Search and browse landlord reviews and ratings from RateTheLandlord.org to explore tenant experiences across locations. View detailed review breakdowns for specific landlords, compare aggregate ratings, and discover tenant resource organizations by area.