Doximity Directory Scraper avatar

Doximity Directory Scraper

Pricing

Pay per event

Go to Apify Store
Doximity Directory Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
profileUrlPublic Doximity profile URL
nameClinician name
credentialsMD, DO, NP, PA, PharmD, and similar credentials when visible
clinicianTypeDirectory category inferred from the source URL
specialtyPublic specialty
subspecialtyPublic subspecialty or focus area
cityProfile city
stateProfile state
postalCodePublic postal code when visible
jobTitlePublic role/title
organizationPublic practice/organization clue when visible
addressPublic address lines
phonePublic phone number when visible
faxPublic fax number when visible
summaryPublic profile summary
educationPublic education/training entries
profileImageUrlPublic profile image URL
sourceListingUrlDirectory page where the profile was found
scrapedAtTimestamp 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

  1. Open the actor on Apify.
  2. Paste one or more Doximity directory URLs.
  3. Set Maximum clinicians.
  4. Keep profile enrichment enabled if you need phone, address, summary, and education fields.
  5. Run the actor and export the dataset.

Example start URLs

https://www.doximity.com/directory/md/specialty/cardiology
https://www.doximity.com/directory/location/tennessee/nashville
https://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 maxItems after 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 ApifyClient
client = 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.

Try other Automation Lab actors for healthcare and lead-generation workflows:

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.