Doximity Directory Scraper
Pricing
Pay per event
Doximity Directory Scraper
Scrape public Doximity clinician directory profiles by specialty, location, or profile URL with public contacts and education fields.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public clinician directory and profile data from Doximity for healthcare recruiting, market research, and lead generation.
What does Doximity Directory Scraper do?
Doximity Directory Scraper collects public clinician records from Doximity directory pages and profile pages. It can start from specialty directories, location directories, clinician-type directories, or direct public profile URLs. The actor is built for public data only and does not require a Doximity login.
Who is it for?
Healthcare recruiters use it to build specialty/location candidate lists. Medical sales teams use it to map public physician and practice contacts. Staffing agencies use it to source clinicians by state, city, and specialty. Market researchers use it to analyze public clinician distribution. Partnership teams use it to enrich account lists with public profile URLs and roles.
Why use this actor?
- ๐ฉบ Healthcare-specific fields instead of generic page titles
- ๐ Directory pagination support
- ๐ Optional public profile enrichment
- โ๏ธ Low-memory HTTP implementation
- ๐ฆ Clean tabular output for exports and integrations
Data you can extract
| Field | Description |
|---|---|
| profileUrl | Public Doximity profile URL |
| name | Clinician name |
| credentials | MD, DO, NP, PA, PharmD, and similar credentials when visible |
| clinicianType | Directory category inferred from the source URL |
| specialty | Public specialty |
| subspecialty | Public subspecialty or focus area |
| city | Profile city |
| state | Profile state |
| postalCode | Public postal code when visible |
| jobTitle | Public role/title |
| organization | Public practice/organization clue when visible |
| address | Public address lines |
| phone | Public phone number when visible |
| fax | Public fax number when visible |
| summary | Public profile summary |
| education | Public education/training entries |
| profileImageUrl | Public profile image URL |
| sourceListingUrl | Directory page where the profile was found |
| scrapedAt | Timestamp for the scrape |
How much does it cost to scrape Doximity clinician profiles?
The actor uses pay-per-event pricing. A small start fee is charged per run and a per-record fee is charged for each clinician saved. Formula-derived BRONZE pricing is $0.00011756 per saved clinician (about $0.12 per 1,000 records), with lower per-record rates on higher Apify tiers. Actual Apify platform pricing is shown on the actor page before you run it.
Quick start
- Open the actor on Apify.
- Paste one or more Doximity directory URLs.
- Set Maximum clinicians.
- Keep profile enrichment enabled if you need phone, address, summary, and education fields.
- Run the actor and export the dataset.
Example start URLs
https://www.doximity.com/directory/md/specialty/cardiologyhttps://www.doximity.com/directory/location/tennessee/nashvillehttps://www.doximity.com/pub/mark-aaron-md
Input options
Start URLs
Use Doximity directory, specialty, location, or public profile URLs. If no start URL is supplied, the actor can build a directory URL from the clinician type and optional paths.
Clinician type
Choose physicians, nurse practitioners, physician assistants, or pharmacists. This is used only when no explicit start URL is provided.
Specialty path
Paste a Doximity specialty path such as /directory/md/specialty/cardiology.
This overrides the clinician type fallback.
Location path
Paste a Doximity location path such as /directory/location/tennessee/nashville.
This is useful for city or state based research.
Maximum clinicians
Controls how many clinician records are saved. Use a low number for test runs, then increase it for production runs.
Open profile detail pages
When enabled, the actor visits each public profile and extracts richer fields. Disable it for faster directory-only collection when you only need names and profile URLs.
Delay between profile requests
Adds a polite pause between detail requests. The default is conservative enough for small and medium runs.
Example input
{"startUrls": [{ "url": "https://www.doximity.com/directory/md/specialty/cardiology" }],"maxItems": 25,"enrichProfiles": true,"requestDelayMs": 250}
Example output
{"profileUrl": "https://www.doximity.com/pub/som-a-bailey-do","name": "Som A. Bailey","credentials": "DO","clinicianType": "md","specialty": "Cardiology","subspecialty": "Interventional Cardiology","city": "Mount Vernon","state": "OH","postalCode": "43050","jobTitle": "Physician","organization": "1330 Coshocton Ave","address": "1330 Coshocton Ave, Mount Vernon, OH 43050","phone": "+1 740-393-9000","fax": null,"summary": "Public profile summary text...","education": ["Ohio University Heritage College of Osteopathic Medicine in Athens โ Class of 2017"],"profileImageUrl": "https://doximity-res.cloudinary.com/...jpg","sourceListingUrl": "https://www.doximity.com/directory/md/specialty/cardiology","scrapedAt": "2026-05-31T08:11:33.798Z"}
Tips for better results
- โ Start with one specialty or one location for a quick test.
- โ Use profile enrichment when contact fields matter.
- โ
Increase
maxItemsafter confirming the first dataset looks right. - โ Use Doximity's own directory paths instead of search-engine result URLs.
- โ Keep a small request delay for public profile detail runs.
Common workflows
Recruit cardiologists in a target region
Use a cardiology specialty URL and filter the exported dataset by city or state.
Build a physician account list
Use a specialty directory, enable enrichment, and export profile URL, name, specialty, organization, address, and phone.
Research clinician coverage
Run several location pages and aggregate by specialty, city, and state.
Integrations
Use the dataset with:
- Google Sheets for lead review
- Airtable for recruiting workflows
- HubSpot or Salesforce imports after your compliance review
- Clay or enrichment tools for additional public data matching
- Internal BI dashboards for healthcare market analysis
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/doximity-directory-scraper').call({startUrls: [{ url: 'https://www.doximity.com/directory/md/specialty/cardiology' }],maxItems: 25,enrichProfiles: true});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/doximity-directory-scraper').call(run_input={'startUrls': [{'url': 'https://www.doximity.com/directory/md/specialty/cardiology'}],'maxItems': 25,'enrichProfiles': True,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~doximity-directory-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.doximity.com/directory/md/specialty/cardiology"}],"maxItems":25,"enrichProfiles":true}'
MCP integration
Connect Apify MCP with this actor:
https://mcp.apify.com?tools=automation-lab/doximity-directory-scraper
Claude Code CLI setup:
$claude mcp add apify-doximity-directory "https://mcp.apify.com?tools=automation-lab/doximity-directory-scraper"
MCP JSON config:
{"mcpServers": {"apify-doximity-directory": {"url": "https://mcp.apify.com?tools=automation-lab/doximity-directory-scraper"}}}
Example prompt: "Use the Apify Doximity Directory Scraper to collect 10 public cardiology profiles and summarize the cities, specialties, and public phone fields."
MCP setup for Claude Code
Add the Apify MCP server with this actor enabled:
$claude mcp add apify-doximity-directory "https://mcp.apify.com?tools=automation-lab/doximity-directory-scraper"
Then ask Claude Code to run the actor, inspect the dataset, and transform the output into CSV, JSONL, or a recruiting workflow.
MCP JSON config
Use this server configuration in MCP-compatible clients:
{"mcpServers": {"apify-doximity-directory": {"url": "https://mcp.apify.com?tools=automation-lab/doximity-directory-scraper"}}}
MCP prompts for Claude Desktop
- "Use the Apify Doximity Directory Scraper to find 25 public cardiology profiles and summarize locations."
- "Run the Doximity scraper for this location page and return profile URLs and phone numbers when public."
- "Create a CSV of public Doximity physician profiles from this specialty directory."
MCP prompts for Claude Code
- "Run automation-lab/doximity-directory-scraper for this Doximity specialty URL and inspect the dataset schema."
- "Use the Doximity scraper dataset to generate a deduplicated lead list."
- "Call the Apify MCP Doximity tool with maxItems 10 and show the first 5 records as a markdown table."
Data quality notes
Doximity pages can vary by profile.
Some public profiles include phone, fax, summary, and education fields.
Others may expose only a name, specialty, and location.
The actor returns null for public fields that are not present.
Legality and responsible use
This actor is designed for publicly available Doximity directory and profile pages. Do not use it to access private, logged-in, restricted, or personal account-only data. Review Doximity's terms and your local laws before using exported data for outreach, recruiting, sales, or analytics. You are responsible for compliance with privacy, anti-spam, and healthcare marketing regulations.
FAQ
Does this actor require a Doximity login?
No. It only extracts data available in public directory and profile HTML.
Can I scrape direct profile URLs?
Yes. Add public /pub/... profile URLs to Start URLs and keep enrichment enabled.
Troubleshooting
Why are some phone or fax fields empty?
The public profile may not show those fields. Enable profile enrichment and verify the public Doximity page includes the field.
Why did I get fewer records than requested?
The directory may have fewer visible profiles from that start page, or the run may have reached the end of pagination. Try a broader specialty or location page.
Why is profile enrichment slower?
The actor opens every public profile page to extract richer details. Disable enrichment if you only need names and profile URLs.
Related scrapers
Try other Automation Lab actors for healthcare and lead-generation workflows:
- https://apify.com/automation-lab/google-maps-lead-finder
- https://apify.com/automation-lab/doctoralia-mexico-scraper
- https://apify.com/automation-lab/yelp-business-scraper
- https://apify.com/automation-lab/linkedin-company-scraper
Changelog
Initial version extracts public Doximity directory links and optional profile details.
Support
If a Doximity URL returns no records, share the input URL and run ID in an Apify issue so the actor can be checked against the current page structure.
Limits
The actor does not log in, bypass access controls, or collect non-public information. It only extracts fields visible in public HTML responses.
Best practices
Run small tests first.
Export only the fields you need.
Deduplicate downstream by profileUrl.
Respect opt-out and compliance requirements in outreach workflows.
Output schema stability
The dataset uses stable field names so automations can depend on predictable exports. New fields may be added in the future, but existing field names are intended to remain compatible.
Performance
The actor uses HTTP requests and Cheerio parsing, so it is lighter than browser-based scrapers. Directory-only mode is fastest. Profile enrichment is more complete and naturally makes more requests.