# RateMDs Doctor Review Scraper (`parseforge/ratemds-scraper`) Actor

Scrape doctor profiles, ratings, and patient reviews from RateMDs.com. Returns doctor name, specialty, location, overall and subcategory ratings, and full review text.

- **URL**: https://apify.com/parseforge/ratemds-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 19 total users, 1 monthly users, 89.3% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

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

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### RateMDs Doctor Review Scraper

**Scrape doctor profiles, ratings, and patient reviews from RateMDs.com.** Every doctor entry includes name, specialty, location, overall and subcategory ratings, and full review text. No login or API key. Export to CSV, JSON, Excel, or XML.

RateMDs is the largest physician review site in North America, but its pages are designed for browsing, not bulk data extraction. Manually copying profiles and reviews is slow and error-prone. This Actor reads public RateMDs search results and doctor profile pages, returning each doctor with their ratings and reviews in a structured dataset.

| Who uses it | What they scrape RateMDs for |
|---|---|
| Healthcare market researchers | Analyze patient satisfaction trends across specialties and regions. |
| Reputation management agencies | Monitor doctor ratings and review sentiment for client reporting. |
| Medical practice administrators | Benchmark their practice against competitors on patient feedback. |
| Data analysts in health tech | Build datasets for predictive models on patient experience. |

### What it does

This Actor collects doctor profiles, ratings, and patient reviews from RateMDs.com by specialty, name, or direct URL, and returns each doctor as a flat row with all associated reviews.

- 🔍 **Direct URL mode:** Paste any RateMDs search results page or doctor profile URL to scrape exactly that page.
- 📋 **Search filter mode:** Choose a specialty, doctor name, gender, or other filters to discover and scrape matching doctors.
- ✅ **Verified and availability filters:** Narrow results to verified doctors, those accepting new patients, offering online scheduling, or virtual visits.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with RateMDs data

**📈 Track patient satisfaction trends.**

A healthcare consultancy runs the scraper monthly across all specialties to report on regional shifts in doctor ratings.

**🩺 Monitor competitor reputation.**

A hospital marketing team scrapes profiles of nearby competing practices to compare overall and subcategory ratings.

**🔍 Find doctors accepting new patients.**

A health plan administrator filters by specialty and accepting new patients to build a referral directory for members.

**📊 Build a training dataset for NLP.**

A data scientist collects thousands of patient reviews to train a sentiment model on healthcare feedback.

### Why choose this scraper

|  | What you get |
|---|---|
| **Structured data** | Each doctor row includes name, specialty, location, overall rating, subcategory ratings (staff, punctuality, helpfulness, knowledge), and full review text. |
| **No API key needed** | Scrapes public RateMDs pages directly. No registration or authentication required. |
| **Flexible input** | Use a direct URL or combine specialty, name, gender, and availability filters to target exactly the doctors you need. |
| **Export ready** | Results export to CSV, JSON, Excel, or XML for immediate analysis in any tool. |

### How it compares

This Actor competes directly with other RateMDs scrapers on Apify. Here is how it compares on key features.

| Feature | ParseForge | RateMDs Physician Review Scraper | RateMDs Doctor Review & Rating Scraper | RateMDs Physician Scraper 🩺 |
|---|---|---|---|---|
| Full review text | Yes | Not listed | Yes | Not listed |
| Subcategory ratings (staff, punctuality, etc.) | Yes | Not listed | Yes | Not listed |
| Filter by accepting new patients | Yes | Not listed | Not listed | Not listed |
| Filter by virtual visits | Yes | Not listed | Not listed | Not listed |
| Filter by online scheduling | Yes | Not listed | Not listed | Not listed |
| Direct URL input | Yes | Not listed | Not listed | Not listed |

### Configure the run

Drive the Actor from a direct RateMDs URL or from search filters like specialty, doctor name, gender, verified status, accepting new patients, online scheduling, and virtual visits. Filters run as each doctor is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10,
  "startUrl": "https://www.ratemds.com/best-doctors/?specialty=addiction-medicine"
}
```

A larger pull:

```json
{
  "maxItems": 200,
  "startUrl": "https://www.ratemds.com/best-doctors/?specialty=addiction-medicine"
}
```

### Pricing

Pay-per-result: **$0.128 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $12.80 |
| 1,000 results | $128.00 |
| 10,000 results | $1280.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [RateMDs Doctor Review Scraper](https://apify.com/parseforge/ratemds-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to RateMDs through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/ratemds-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your direct URL is a valid RateMDs search or profile page. If using filters, ensure the specialty or name matches existing doctors. Try a broader search first.

**The scraper stops after a few doctors.**

RateMDs may block rapid requests. Reduce the 'maxItems' value or increase the delay between requests in the advanced settings. Using a proxy may also help.

**Some doctor fields are missing.**

Not all doctors have complete profiles. Fields like subcategory ratings or reviews may be empty if the doctor has no reviews. The scraper returns what is publicly available.

**The run takes too long.**

Set a lower 'maxItems' limit. The scraper respects RateMDs' page load times; reducing the target count speeds up the run.

### FAQ

| Question | Answer |
|---|---|
| Do I need an API key or login to use this scraper? | No. The scraper reads public RateMDs pages directly. No authentication is required. |
| Can I scrape all doctors in a specific city? | Yes, use a direct URL to a RateMDs search results page filtered by city, or combine specialty and name filters to narrow results. |
| What data is included for each doctor? | Each doctor row includes name, specialty, location, overall rating, subcategory ratings (staff, punctuality, helpfulness, knowledge), and the full text of each patient review. |
| How many doctors can I scrape in one run? | You can set a maximum up to 1,000,000 doctors. The actual number depends on RateMDs results and your plan limits. |
| Does the scraper handle pagination? | Yes, it automatically follows pagination on search results pages to collect all matching doctors. |
| Can I scrape only verified doctors? | Yes, enable the 'Verified Doctors Only' checkbox in the input filters. |
| What export formats are supported? | Results can be exported as CSV, JSON, Excel, or XML. |
| Is this scraper legal to use? | Scraping public data from RateMDs is generally allowed, but you should review RateMDs' terms of service and respect robots.txt. This Actor is for legitimate data collection. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by RateMDs Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Maximum number of doctors to collect per run.

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

Direct URL to scrape. Use this OR search filters below, not both. Can be a search results page or a specific doctor profile page.

## `specialty` (type: `string`):

Filter by medical specialty. Use this OR startUrl above, not both.

## `doctorName` (type: `string`):

Search for specific doctor names

## `gender` (type: `string`):

Filter by doctor gender. Options: 'male', 'female', or leave empty for all

## `verified` (type: `boolean`):

Show only verified doctors

## `acceptingNewPatients` (type: `boolean`):

Show only doctors accepting new patients

## `onlineScheduling` (type: `boolean`):

Show only doctors with online scheduling available

## `virtualVisits` (type: `boolean`):

Show only doctors offering virtual visits

## Actor input object example

```json
{
  "maxItems": 10,
  "startUrl": "https://www.ratemds.com/best-doctors/?specialty=addiction-medicine",
  "doctorName": "John Smith",
  "verified": false,
  "acceptingNewPatients": false,
  "onlineScheduling": false,
  "virtualVisits": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview view of doctors with key fields displayed in a table format

# 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.ratemds.com/best-doctors/?specialty=addiction-medicine"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/ratemds-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "startUrl": "https://www.ratemds.com/best-doctors/?specialty=addiction-medicine",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/ratemds-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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.ratemds.com/best-doctors/?specialty=addiction-medicine"
}' |
apify call parseforge/ratemds-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/ratemds-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8fGlDJQd0hSDQ0gir/builds/fKLhuey6l9tJ9HDDP/openapi.json
