RateMyProfessors Scraper avatar

RateMyProfessors Scraper

Pricing

from $0.80 / 1,000 professor profiles

Go to Apify Store
RateMyProfessors Scraper

RateMyProfessors Scraper

[πŸ’° $0.8 / 1K] Extract RateMyProfessors professor profiles and student ratings. Search by school or professor name, or paste profile URLs. Get rating, difficulty, would-take-again %, top tags, and every student review. Ideal for education research and EdTech.

Pricing

from $0.80 / 1,000 professor profiles

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull professor profiles and the individual student ratings behind them from RateMyProfessors β€” average quality, difficulty, would-take-again %, top tags, and every comment with its course, grade, and post date. Search a whole school, look up professors by name, or paste profile URLs, and get back clean, linked records. Built for education researchers, EdTech product teams, and academic-advising tools that need professor sentiment at scale without copy-pasting profiles one page at a time.

Why This Scraper?

  • Two linked record types in one run β€” every job returns professor profile rows plus individual rating rows, joined by professorId and professorLegacyId, so you can pivot from a professor's 4.3 average straight to the hundreds of comments behind it.
  • The three headline metrics, pre-parsed β€” a 0–5 average quality rating, a 0–5 average difficulty score, and the would-take-again percentage on every professor, alongside the total rating count.
  • Full per-rating breakdown β€” each student rating carries the course code, a 1–5 quality score, a 1–5 difficulty score, the free-text comment, the reported letter grade, and the post date in clean ISO 8601.
  • Grade, textbook, credit, online, and attendance signals β€” each rating exposes whether a textbook was used, whether the class was for credit, whether it was online, and the attendance-mandatory flag β€” context you can filter and segment on.
  • Top-tags aggregation β€” up to 5 most-used tags per professor (e.g. "Tough grader", "Gives good feedback", "Get ready to read"), ranked by frequency across their reviews.
  • Community helpfulness on every review β€” thumbs-up and thumbs-down counts per rating, so you can weight comments by peer agreement instead of treating every review equally.
  • Three ways to target data β€” scrape a whole school (by name or numeric RateMyProfessors ID), search professors by name (optionally narrowed to one school), or paste /professor/ and /school/ URLs directly, all mixable in a single run.
  • Independent, predictable caps β€” maxProfessors and maxRatingsPerProfessor are separate controls, so a 50-professor / 100-ratings run stays predictable instead of hiding behind one blurry combined limit.
  • Pipeline-ready IDs β€” every professor ships both the stable RateMyProfessors ID and the numeric legacyId, plus a ready-to-open profileUrl, so downstream re-lookups and follow-up runs chain cleanly.

Use Cases

Academic Research

  • Study grade-inflation and student-sentiment trends across departments or entire schools.
  • Compare would-take-again rates and difficulty scores between institutions.
  • Build longitudinal datasets from rating post dates spanning multiple academic years.

EdTech & Product

  • Seed course-planning and professor-matching apps with structured ratings.
  • Enrich scheduling tools with quality and difficulty scores plus top tags.
  • Power "best professor for this course" recommendation features.

Student Advising & Course Planning

  • Flag high-difficulty, low-would-take-again sections before registration.
  • Surface a professor's most-used tags so students know what to expect.
  • Aggregate course-level feedback by class code across a department.

Reputation & Sentiment Analysis

  • Track how a department's ratings evolve over time.
  • Mine free-text comments for recurring themes with your own NLP.
  • Weight consensus using thumbs-up counts on individual reviews.

Lead Generation (Tutoring & Services)

  • Identify high-difficulty courses where tutoring demand is strongest.
  • Target schools and departments by average difficulty.
  • Build outreach lists segmented by school and department.

Getting Started

Scrape one school (summaries only)

{
"schools": ["Arizona State University"],
"maxProfessors": 25,
"includeRatings": false
}

Find a professor by name, narrowed to a school, with ratings

{
"schools": ["University of California Los Angeles"],
"professorNames": ["Andrew Ng"],
"maxProfessors": 20,
"includeRatings": true,
"maxRatingsPerProfessor": 50
}

Paste URLs directly and pull deep ratings

{
"startUrls": [
"https://www.ratemyprofessors.com/professor/1936365",
"https://www.ratemyprofessors.com/school/1234"
],
"maxProfessors": 100,
"includeRatings": true,
"maxRatingsPerProfessor": 200
}

Input Reference

What to Scrape

Fill in any combination β€” everything you populate runs in one job.

ParameterTypeDefaultDescription
schoolsarray["Arizona State University"]School names (e.g. Arizona State University) or numeric RateMyProfessors school IDs (e.g. 15723). Pulls every professor at each school. Also narrows the professor-name search below.
professorNamesarray[]Professor names to search for (e.g. John Smith). Returns matching profiles. Add a school above to narrow the search to that campus.
startUrlsarray[]RateMyProfessors professor URLs (/professor/<id> β†’ that professor) or school URLs (/school/<id> β†’ all its professors). Type is detected automatically.

Results

ParameterTypeDefaultDescription
maxProfessorsinteger50Maximum professors to collect per school or per name search. Set to 0 for as many as available. Ignored for direct professor URLs (those return one professor each).

Ratings

ParameterTypeDefaultDescription
includeRatingsbooleantrueAlso collect each professor's individual student ratings (comment, course, quality and difficulty scores, grade, tags, and more), added as separate linked rows. Turn off for professor summaries only.
maxRatingsPerProfessorinteger100Maximum ratings to collect per professor when ratings are enabled. Set to 0 for all available. Popular professors can have hundreds to over a thousand ratings.

Output

Every run writes to one Overview tab with all records, plus clean Professors and Ratings tabs that are type-filtered subsets. Each row carries a recordType field so you can split them anywhere.

Professor record

{
"recordType": "professor",
"professorId": "VGVhY2hlci0xOTM2MzY1",
"legacyId": 1936365,
"firstName": "Jane",
"lastName": "Doe",
"fullName": "Jane Doe",
"department": "Computer Science",
"schoolId": "U2Nob29sLTE1NzIz",
"schoolLegacyId": 15723,
"schoolName": "Arizona State University",
"avgRating": 4.3,
"avgDifficulty": 3.1,
"numRatings": 214,
"wouldTakeAgainPercent": 88,
"topTags": ["Gives good feedback", "Caring", "Respected", "Clear grading criteria", "Inspirational"],
"profileUrl": "https://www.ratemyprofessors.com/professor/1936365"
}
FieldTypeDescription
recordTypestringAlways "professor"
professorIdstringStable RateMyProfessors professor ID (use for joins)
legacyIdintegerNumeric professor ID used in the profile URL
firstNamestringProfessor's first name
lastNamestringProfessor's last name
fullNamestringCombined first and last name
departmentstringDepartment the professor teaches in
schoolIdstringStable RateMyProfessors school ID
schoolLegacyIdintegerNumeric school ID
schoolNamestringSchool name
avgRatingnumberAverage overall quality rating (0–5)
avgDifficultynumberAverage difficulty (0–5)
numRatingsintegerTotal number of student ratings on the profile
wouldTakeAgainPercentnumberPercent of students who would take the professor again (null when unrated)
topTagsarrayUp to 5 most-used rating tags, ranked by frequency
profileUrlstringDirect link to the professor's RateMyProfessors page

Rating record

Present only when Include Student Ratings is enabled. One row per student rating, linked back to its professor.

{
"recordType": "rating",
"ratingId": "UmF0aW5nLTM4MjE0NTk=",
"professorId": "VGVhY2hlci0xOTM2MzY1",
"professorLegacyId": 1936365,
"professorName": "Jane Doe",
"schoolName": "Arizona State University",
"class": "CSE110",
"qualityRating": 5,
"difficultyRating": 3,
"comment": "Clear lectures and fair exams. Attend every class and you'll do well.",
"date": "2026-03-10T18:02:47Z",
"grade": "A",
"wouldTakeAgain": true,
"attendanceMandatory": "mandatory",
"textbookUse": true,
"isForCredit": true,
"isForOnlineClass": false,
"tags": ["Clear grading criteria", "Gives good feedback"],
"thumbsUp": 12,
"thumbsDown": 1
}

Rating & review

FieldTypeDescription
recordTypestringAlways "rating"
ratingIdstringUnique rating ID
professorIdstringParent professor ID (join key back to the professor row)
professorLegacyIdintegerParent professor numeric ID (join key)
professorNamestringParent professor's full name (standalone context)
schoolNamestringSchool name (standalone context)
classstringCourse code the rating is for (e.g. CSE110)
qualityRatingnumberStudent's quality score (1–5)
difficultyRatingnumberStudent's difficulty score (1–5)
commentstringFree-text review comment
datestringPost date in ISO 8601 UTC (e.g. 2026-03-10T18:02:47Z)

Course context & feedback

FieldTypeDescription
gradestringLetter grade the student reported receiving
wouldTakeAgainbooleanWhether the student would take the professor again
attendanceMandatorystringAttendance flag (mandatory / non mandatory / null)
textbookUsebooleanWhether a textbook was used
isForCreditbooleanWhether the class was taken for credit
isForOnlineClassbooleanWhether it was an online class
tagsarrayTags the student applied to this rating
thumbsUpintegerHelpful (thumbs-up) count from the community
thumbsDownintegerNot-helpful (thumbs-down) count

Tips for Best Results

  • Skip search with direct URLs β€” paste /professor/<id> or /school/<id> links to jump straight to exactly the professors or schools you want, with no name matching in the way.
  • Use a numeric school ID for exact targeting β€” school names go through a fuzzy match, but the numeric ID (the number in a /school/<id> URL) always resolves to the exact campus.
  • Turn off ratings for a fast, cheap professor census β€” you still get every average rating, difficulty, would-take-again %, and top tags, without the per-professor rating pull.
  • Cap maxRatingsPerProfessor for predictable costs β€” popular professors can have 1,000+ ratings; a cap of 50–100 keeps runs fast. Set it to 0 only when you truly need the full history.
  • Add a school to narrow a professor-name search β€” putting a school in the Schools field limits "John Smith" to that campus instead of every John Smith across North America.
  • Keep ratings on if tags matter β€” RateMyProfessors often leaves the profile-level tag list empty, so top tags are rebuilt from the individual ratings; they populate best when ratings are enabled.
  • Start small, then scale β€” run 10–25 professors first to confirm the school and fields look right, then raise maxProfessors.

Pricing

From $0.80 per 1,000 professors + $0.20 per 1,000 ratings. You're charged per professor profile plus per student rating collected β€” a dual model that keeps summary-only runs cheap and only adds rating cost when you ask for ratings. No compute or time-based charges; you pay per professor and per rating collected, plus a small fixed per-run start fee.

Bronze, Silver, and Gold discount tiers apply automatically based on your Apify subscription plan β€” the higher your tier, the less you pay per result.

Per 1,000 professors collected

VolumeNo discountBronzeSilverGold
100 professors$0.095$0.090$0.085$0.080
1,000 professors$0.95$0.90$0.85$0.80
10,000 professors$9.50$9.00$8.50$8.00
100,000 professors$95.00$90.00$85.00$80.00

Per 1,000 student ratings collected

VolumeNo discountBronzeSilverGold
100 ratings$0.024$0.022$0.021$0.020
1,000 ratings$0.24$0.22$0.21$0.20
10,000 ratings$2.40$2.20$2.10$2.00
100,000 ratings$24.00$22.00$21.00$20.00

Example totals at Gold pricing

RunProfessorsRatingsProfessor costRating costTotal
100 professors Γ— 20 ratings each1002,000$0.08$0.40$0.48
500 professors Γ— 40 ratings each50020,000$0.40$4.00$4.40

A "result" is one professor profile or one student rating. Turn off Include Student Ratings to pay for professors only. Platform usage fees are additional.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Trigger custom APIs on run completion
  • Apify API β€” Full programmatic access

This scraper collects publicly available information from RateMyProfessors. Use the data responsibly and in compliance with RateMyProfessors' terms of service and all applicable laws, including data-protection regulations such as GDPR and CCPA. Student ratings are user-generated opinions β€” treat them as subjective commentary, not statements of fact, and do not use the data to harass, defame, or make automated decisions about individuals. You are responsible for how you use the data you collect.