Discover/SalaryDr API
live

SalaryDr APIsalarydr.com

Access physician and dentist salary submissions, benchmarks, and specialty/state breakdowns from SalaryDr via a structured REST API with 9 endpoints.

Endpoint health
verified 4d ago
get_specialty_salary_by_state
get_recent_salary_submissions
get_salary_submission_detail
get_salary_benchmarks_table
get_benchmark_specialty_detail
9/9 passing latest checkself-healing
Endpoints
9
Updated
26d ago

What is the SalaryDr API?

The SalaryDr API exposes 9 endpoints covering physician and dentist compensation data including individual salary submissions, aggregated benchmarks, and specialty-level statistics. The get_salary_benchmarks_table endpoint returns median, average, and full percentile distributions (10th through 90th) with employment-type breakdowns, while get_all_salary_submissions lets you filter across role, specialty, state, practice type, and compensation range across a paginated dataset.

Try it
Page number for pagination
Filter by role: 'physician', 'resident', or 'fellow'. Omitting returns all roles.
Filter by US state name (e.g. 'California', 'New York')
Filter by medical specialty (e.g. 'Cardiology', 'Internal Medicine')
Maximum total compensation filter in dollars (e.g. '600000')
Minimum total compensation filter in dollars (e.g. '400000')
Filter by practice setting type (e.g. 'Academic', 'Hospital Employed', 'Private Practice')
api.parse.bot/scraper/da296220-8000-41a3-a7d9-80fe1140d2ad/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/da296220-8000-41a3-a7d9-80fe1140d2ad/get_all_salary_submissions?page=1&role=physician&limit=20&state=California&offset=0&specialty=Cardiology&salary_max=600000&salary_min=400000&practice_type=Academic' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace salarydr-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: SalaryDr SDK — physician and dentist salary exploration."""
from parse_apis.salarydr_api import SalaryDr, Role, NotFoundError

client = SalaryDr()

# Discover available specialties
directory = client.specialtydirectories.get()
print(directory.count, directory.specialties[:5])

# Search physician submissions filtered by role and specialty
for submission in client.submissions.search(role=Role.PHYSICIAN, specialty="Cardiology", limit=3):
    print(submission.id, submission.specialty, submission.total_compensation, submission.practice_setting)

# Get overall salary explorer overview
overview = client.overviews.get()
print(overview.total_submissions, overview.median_total_comp, overview.average_workload_hours)
for p in overview.percentiles:
    print(p.name, p.value)

# Drill into a specific specialty's benchmarks and navigate to state data
cardiology = client.specialtybenchmarks.get(specialty="Cardiology")
print(cardiology.specialty, cardiology.average_salary, cardiology.submission_count)

state_data = cardiology.state_data.get(state="California")
print(state_data.state, state_data.count)
print(state_data.stats.average_salary, state_data.stats.median_salary)

# Get aggregated benchmarks with typed error handling
try:
    overall = client.benchmarks.get()
    print(overall.total_submissions, overall.average_salary, overall.median_salary)
    for emp in overall.by_employment_type:
        print(emp.type, emp.salary, emp.submissions)
except NotFoundError as exc:
    print(f"benchmarks unavailable: {exc}")

print("exercised: specialtydirectories.get / submissions.search / overviews.get / specialtybenchmarks.get / state_data.get / benchmarks.get")
All endpoints · 9 totalmissing one? ·

Search paginated physician salary submissions. Supports filtering by role, specialty, state, practice type, and compensation range. Returns 20 submissions per page. Paginates via integer page counter.

Input
ParamTypeDescription
pageintegerPage number for pagination
rolestringFilter by role: 'physician', 'resident', or 'fellow'. Omitting returns all roles.
statestringFilter by US state name (e.g. 'California', 'New York')
specialtystringFilter by medical specialty (e.g. 'Cardiology', 'Internal Medicine')
salary_maxstringMaximum total compensation filter in dollars (e.g. '600000')
salary_minstringMinimum total compensation filter in dollars (e.g. '400000')
practice_typestringFilter by practice setting type (e.g. 'Academic', 'Hospital Employed', 'Private Practice')
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "count": "total matching submissions",
    "submissions": "array of salary submission objects",
    "total_pages": "total pages available"
  },
  "sample": {
    "data": {
      "page": 1,
      "count": 3728,
      "submissions": [
        {
          "id": 4483,
          "state": "Florida",
          "role_type": "Resident",
          "specialty": "Ophthalmology",
          "role_title": "Resident",
          "base_salary": 60000,
          "hours_worked": 45,
          "subspecialty": null,
          "employment_type": "trainee",
          "submission_date": "2026-06-06T16:27:28.791+00:00",
          "bonus_incentives": null,
          "practice_setting": "Residency",
          "satisfaction_level": 5,
          "total_compensation": 60000,
          "geographic_location": "Florida",
          "years_of_experience": 3,
          "effective_hourly_rate": 25.64
        }
      ],
      "total_pages": 187
    },
    "status": "success"
  }
}

About the SalaryDr API

Salary Submissions and Filtering

get_all_salary_submissions returns paginated physician salary records (20 per page) with filters for role (physician, resident, or fellow), state, specialty, practice_type, and salary_min/salary_max bounds. Each submission object includes fields like base_salary, total_compensation, hours_worked, practice_setting, satisfaction_level, and submission_date. To retrieve a single record by its numeric ID, use get_salary_submission_detail — note that this endpoint searches the most recent results, so older submissions may not resolve. Dentist records are served separately via get_dentist_salaries, which shares the same submission shape and pagination behavior.

Benchmarks and Specialty Detail

get_salary_benchmarks_table provides overall or specialty-filtered aggregate stats: median_salary, average_salary, average_base, total_submissions, a percentiles array, and a by_employment_type breakdown. For deeper specialty analysis, get_benchmark_specialty_detail adds average_hours_week, average_satisfaction, salary_distribution, and a per-employment-type salary and submission count breakdown. The get_salary_explorer_overview endpoint returns site-wide physician metrics including would_choose_again_percent, average_workload_hours, and average_satisfaction with no inputs required.

Geographic and Specialty Coverage

get_specialty_salary_by_state accepts both a state and a specialty and returns matching individual submissions alongside aggregate stats (averageSalary, medianSalary, totalSubmissions) for that state-specialty pair. get_all_specialties_list enumerates every specialty with at least one submission, returning a sorted array of specialty name strings and a total count — useful for discovering valid values before querying other endpoints.

Reliability & maintenanceVerified

The SalaryDr API is a managed, monitored endpoint for salarydr.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when salarydr.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official salarydr.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
9/9 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Benchmarking physician compensation offers against get_salary_benchmarks_table percentile ranges by specialty
  • Comparing geographic pay variation using get_specialty_salary_by_state for the same specialty across multiple states
  • Building a salary transparency tool surfacing recent submissions via get_recent_salary_submissions
  • Analyzing employment-type pay differences (Academic vs. Hospital Employed vs. Private Practice) from by_employment_type fields
  • Populating a residency/fellowship compensation guide using the role filter on get_all_salary_submissions
  • Tracking dentist compensation trends by paginating through get_dentist_salaries submissions over time
  • Generating specialty satisfaction and workload reports using average_satisfaction and average_hours_week from get_benchmark_specialty_detail
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does SalaryDr have an official developer API?+
SalaryDr does not publish an official public developer API. This Parse API provides structured programmatic access to the salary data on the site.
What does `get_salary_submission_detail` return and are there coverage limits?+
It returns full metadata for a single submission by numeric ID: base_salary, total_compensation, hours_worked, practice_setting, satisfaction_level, submission_date, specialty, state, and role_title. The endpoint searches the most recent page of results, so submissions that are no longer in the recent result set may not resolve — if you need broad historical lookup, paginating through get_all_salary_submissions with filters is more reliable.
Can I filter dentist salary submissions by state or specialty the same way physician submissions can be filtered?+
get_dentist_salaries currently supports only page-based pagination — it does not accept state, specialty, role, or compensation range filters. Specialty and state filtering are available for physician data via get_all_salary_submissions. You can fork this API on Parse and revise it to add filter parameters to the dentist endpoint.
Does the API expose resident or fellow salary data at the benchmark or percentile level?+
Not currently. Residents and fellows can be isolated in raw submissions using the role filter on get_all_salary_submissions, but the benchmark endpoints (get_salary_benchmarks_table, get_benchmark_specialty_detail, get_salary_explorer_overview) reflect physician-level aggregates. You can fork this API on Parse and revise it to add resident/fellow-specific benchmark endpoints.
How is pagination handled across the submission endpoints?+
get_all_salary_submissions and get_dentist_salaries both return 20 submissions per page. Responses include page (current page), total_pages, and count (total matching submissions), so you can iterate through all results by incrementing the page integer parameter until you reach total_pages.
Page content last updated . Spec covers 9 endpoints from salarydr.com.
Related APIs in HealthcareSee all →
lybrate.com API
Search for doctors across Indian cities and specialties, view detailed profiles with patient reviews and services, and discover clinic information and health content all in one place. Find the right healthcare provider by browsing ratings, qualifications, and medical expertise tailored to your needs.
indeed.com API
Search and discover job opportunities on Indeed while accessing detailed job descriptions, company profiles, and salary insights all in one place. Get comprehensive career information including specific compensation data to help you find and evaluate the right job opportunity for you.
doctoralia.com.br API
Find healthcare specialists in Brazil with their profiles, contact details, Instagram handles, pricing, and patient reviews all in one place. Search and discover doctors by specialty with autocomplete suggestions to quickly locate the right professional for your needs.
zocdoc.com API
Search for doctors and medical practices on Zocdoc by specialty and location. Retrieve provider profiles, accepted insurance, office locations, patient reviews, and appointment availability.
levels.fyi API
Access real compensation data, benefits packages, and salary trends across tech companies and job levels. Retrieve internship pay, H-1B visa salary records, company profiles, and detailed breakdowns by role and level.
chirojobs.com API
Search and browse chiropractic job listings with detailed information, explore job categories, and access ChiroJobs blog content and pricing—all in one place. Find related positions, compare opportunities, and stay informed with the latest industry insights.
dentaltix.com API
Search and browse dental supplies and equipment across thousands of products, categories, and brands while accessing detailed information like variants and customer reviews. Find the best deals and discover exactly what you need with powerful product search and filtering capabilities.
apollo247.com API
Search and compare medicines, view detailed product information, discover lab tests, and locate nearby Apollo 24|7 pharmacy stores. Browse medical specialties and popular diagnostic services to plan your healthcare needs in one convenient platform.