ZocDoc Scraper avatar
ZocDoc Scraper

Pricing

$29.99/month + usage

Go to Apify Store
ZocDoc Scraper

ZocDoc Scraper

Scrape ZocDoc doctors, patient reviews, and appointment availability without login. Search by specialty, location, and insurance. Extract ratings, reviews, availability slots, and full provider profiles.

Pricing

$29.99/month + usage

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

by SilentFlow

Unlimited ZocDoc web scraper to crawl doctors, patient reviews, and appointment availability without login. Search by specialty, location, insurance, and more.

Why use this scraper?

  • No login required: Scrape all public ZocDoc data without authentication
  • Comprehensive data: Doctors, reviews, ratings, availability, and full provider profiles
  • Flexible input: Scrape by URL or search by specialty and location
  • Advanced filtering: Sort by rating, filter by telehealth, gender, day, and insurance
  • High reliability: Built-in retry logic and residential proxy support

Use cases

IndustryApplication
Healthcare analyticsAnalyze doctor ratings, wait times, and patient satisfaction
Market researchMap healthcare provider distribution across regions
Insurance analysisTrack which providers accept specific insurance plans
Patient experienceMonitor review sentiment and bedside manner ratings
Competitor intelligenceBenchmark practice performance against competitors
Appointment trackingMonitor availability trends for popular specialties

Input parameters

URL scraping

ParameterTypeDescription
startUrlsarrayZocDoc URL(s) to scrape (search pages, doctor profiles, practice pages)

Supported URL types:

  • Search pages: https://www.zocdoc.com/search?address=New+York&dr_specialty=dentist
  • Doctor profiles: https://www.zocdoc.com/doctor/john-smith-do-123456
  • Practice pages: https://www.zocdoc.com/practice/downtown-dental-12345
ParameterTypeDescription
searchesarraySpecialty names to search (e.g., "Dentist", "Dermatologist")
locationstringCity, state, or zip code (default: "New York, NY")
insurancestringInsurance carrier name (optional)

Sorting & filtering

ParameterTypeDefaultOptions
sortstringDefaultDefault, BestMatch, HighestRated, SoonestAvailable
dayFilterstringAnyDayAnyDay, Today, Tomorrow, NextThreeDays, NextTwoWeeks
genderstring-1-1 (Any), 1 (Male), 2 (Female)
offersTelehealthbooleanfalseOnly telehealth providers
seesChildrenbooleanfalseOnly pediatric providers

Limits

ParameterTypeDefaultDescription
maxItemsinteger50Maximum total items to save
maxDoctorsinteger20Maximum doctors per search
maxReviewsinteger10Maximum reviews per doctor

Options

ParameterTypeDefaultDescription
scrapeProfilesbooleantrueVisit doctor profiles for detailed data
skipReviewsbooleanfalseSkip review extraction
skipAvailabilitybooleanfalseSkip availability extraction

Advanced

ParameterTypeDefaultDescription
scrollTimeoutinteger30Request timeout in seconds
debugModebooleanfalseEnable detailed logging
proxyobjectresidentialProxy configuration

Output data

Doctor example

{
"id": "123456",
"url": "https://www.zocdoc.com/doctor/john-smith-do-123456",
"name": "John Smith, DO",
"firstName": "John",
"lastName": "Smith, DO",
"title": "DO",
"specialty": "Dentist",
"specialties": ["Dentist", "Cosmetic Dentistry"],
"address": "123 Main St, Suite 200",
"city": "New York",
"state": "NY",
"zipCode": "10001",
"phone": "(212) 555-0100",
"latitude": 40.7128,
"longitude": -74.006,
"overallRating": 4.8,
"bedsideMannerRating": 4.9,
"waitTimeRating": 4.6,
"reviewCount": 142,
"profilePhotoUrl": "https://d1k13df5m14swc.cloudfront.net/photos/...",
"education": ["NYU College of Dentistry - DDS"],
"boardCertifications": ["American Board of Dentistry"],
"languages": ["English", "Spanish"],
"insurancesAccepted": ["Aetna", "Blue Cross", "Cigna", "United Healthcare"],
"gender": "Male",
"yearsOfExperience": 15,
"practiceName": "Downtown Dental Care",
"bio": "Dr. Smith specializes in...",
"isAcceptingNewPatients": true,
"offersTelehealth": false,
"nextAvailableDate": "2024-06-15",
"scrapedAt": "2024-06-14T10:30:00Z",
"dataType": "doctor"
}

Review example

{
"id": "review-1",
"doctorName": "John Smith, DO",
"doctorUrl": "https://www.zocdoc.com/doctor/john-smith-do-123456",
"reviewRating": 5.0,
"reviewBedsideManner": 5.0,
"reviewWaitTime": 4.0,
"reviewText": "Dr. Smith was excellent. Very thorough and took the time to explain everything.",
"reviewDate": "2024-05-20",
"isVerified": true,
"scrapedAt": "2024-06-14T10:30:00Z",
"dataType": "review"
}

Availability example

{
"doctorName": "John Smith, DO",
"doctorUrl": "https://www.zocdoc.com/doctor/john-smith-do-123456",
"date": "2024-06-15",
"timeSlots": ["9:00 AM", "10:30 AM", "2:00 PM", "3:30 PM"],
"appointmentType": "in-person",
"locationName": "Downtown Dental Care",
"address": "123 Main St, Suite 200",
"scrapedAt": "2024-06-14T10:30:00Z",
"dataType": "availability"
}

Data fields

CategoryFields
Identityid, url, name, firstName, lastName, title
Specialtyspecialty, specialties, boardCertifications
Locationaddress, city, state, zipCode, phone, latitude, longitude
RatingsoverallRating, bedsideMannerRating, waitTimeRating, reviewCount
ProfileprofilePhotoUrl, education, languages, bio, gender, yearsOfExperience
PracticepracticeName, insurancesAccepted, isAcceptingNewPatients, offersTelehealth
AvailabilitynextAvailableDate, date, timeSlots, appointmentType, locationName
ReviewsreviewRating, reviewBedsideManner, reviewWaitTime, reviewText, reviewDate, isVerified
MetascrapedAt, dataType

Examples

Search for dentists in New York

{
"searches": ["Dentist"],
"location": "New York, NY",
"maxItems": 50,
"maxDoctors": 20,
"maxReviews": 10,
"sort": "HighestRated"
}

Search for therapists with telehealth

{
"searches": ["Therapist"],
"location": "Los Angeles, CA",
"offersTelehealth": true,
"maxItems": 100,
"maxDoctors": 50
}

Scrape a specific doctor profile

{
"startUrls": [{"url": "https://www.zocdoc.com/doctor/john-smith-do-123456"}],
"maxReviews": 50
}

Search multiple specialties

{
"searches": ["Dermatologist", "Primary Care Doctor", "Pediatrician"],
"location": "Chicago, IL",
"sort": "SoonestAvailable",
"dayFilter": "NextThreeDays",
"maxItems": 200,
"maxDoctors": 30
}

Integrations

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("silentflow/zocdoc-scraper").call(run_input={
"searches": ["Dentist"],
"location": "New York, NY",
"maxItems": 50,
"maxDoctors": 20,
"maxReviews": 10,
"sort": "HighestRated"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["dataType"] == "doctor":
print(f"[{item['overallRating']}] {item['name']} - {item['specialty']}")
elif item["dataType"] == "review":
print(f" ⭐ {item['reviewRating']}: {item['reviewText'][:80]}")
elif item["dataType"] == "availability":
print(f" 📅 {item['date']}: {', '.join(item['timeSlots'])}")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('silentflow/zocdoc-scraper').call({
searches: ['Dermatologist'],
location: 'San Francisco, CA',
maxItems: 100,
sort: 'HighestRated'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
if (item.dataType === 'doctor') {
console.log(`[${item.overallRating}] ${item.name} - ${item.specialty}`);
}
});

Performance & limits

MetricValue
Results per pageup to 10
Pages per searchup to 10 (ZocDoc limit)
Max doctors per search~100
Supported contentDoctors, Reviews, Availability

Tips for best results

  1. Use specific specialties: Target specific specialties for focused results
  2. Set realistic limits: Start with maxItems: 50 to test before large scrapes
  3. Use residential proxy: Enabled by default for best reliability with ZocDoc
  4. Skip what you don't need: Use skipReviews and skipAvailability for faster scraping
  5. Disable profile scraping: Set scrapeProfiles: false for quick search-only results
  6. Filter by day: Use dayFilter to find doctors with immediate availability

FAQ

Q: Can I scrape all doctors in a city? A: ZocDoc limits search results to ~10 pages per specialty. Search multiple specialties for broader coverage.

Q: Why are some fields empty? A: Not all doctors have complete profiles. Enable scrapeProfiles for maximum data.

Q: How often can I run the scraper? A: No limits on frequency. Use residential proxies for best results.

Q: What happens if ZocDoc blocks the scraper? A: The scraper automatically rotates proxies and retries. If all attempts fail, try again later.

Q: Can I filter by insurance? A: Yes, use the insurance parameter with the carrier name.

Support

Need help? We're here for you:

  • Bug reports: Open an issue on the actor page
  • Questions: Message us via Apify console
  • Feature requests: Let us know what you need
  • Custom solutions: Contact us for enterprise integrations or high-volume needs

Check out our other scrapers: SilentFlow on Apify