Dental & Clinic Enricher: Insurance, New Patients avatar

Dental & Clinic Enricher: Insurance, New Patients

Pricing

$20.00 / 1,000 enriched practices

Go to Apify Store
Dental & Clinic Enricher: Insurance, New Patients

Dental & Clinic Enricher: Insurance, New Patients

accepting_new_patients, insurance_accepted, accepts_medicaid, online_booking_url, hours, services, languages, providers, with evidence quotes for the key facts. Dental, ortho, chiro, vet, med spa, PT, optometry, derm, mental health. $0.02 per practice; free plan: 3 per run without a key.

Pricing

$20.00 / 1,000 enriched practices

Rating

0.0

(0)

Developer

Sniper Search

Sniper Search

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Dental & Clinic Enricher

accepting_new_patients, insurance_accepted, accepts_medicaid, online_booking_url, hours, services, languages, providers: one JSON row per practice, with an evidence quote from the practice's own website behind each key fact, for dental, orthodontic, chiropractic, veterinary, med spa, physical therapy, optometry, dermatology and mental health practices. $0.02 per enriched practice; the free Apify plan enriches the first 3 practices of a run; add your own Anthropic key for the rest.

Registries like NPPES tell you a provider exists. Google Maps gives you a pin and a phone number. Neither tells you whether the practice is in-network with Delta Dental, takes Trupanion for pets, or has a new-patient form. This Actor reads the practice's own website (homepage plus the insurance, new-patient, appointment and contact pages) and extracts those facts with Claude into clean JSON.

Works as a tool for AI agents through Apify's MCP server, as an API, or as a batch enrichment step after any NPI or Google Maps scraper.

Example output (one practice)

A dental practice; every practice type returns the same fields.

{
"status": "ok",
"website": "https://brightsmilefamilydentistry.com/",
"practice_name": "Bright Smile Family Dentistry",
"is_practice_own_site": true,
"accepting_new_patients": "yes",
"insurance_accepted": ["Delta Dental PPO", "Cigna", "MetLife", "Most PPO plans"],
"accepts_medicaid": "no",
"in_house_membership_plan": "yes",
"financing_options": ["CareCredit"],
"online_booking": "yes",
"online_booking_url": "https://www.zocdoc.com/practice/bright-smile-12345",
"phone": "(512) 555-0100",
"address": "123 Main St, Austin, TX 78701",
"hours": [{ "day": "Monday", "hours": "8:00 AM - 5:00 PM" }, { "day": "Saturday", "hours": "Closed" }],
"open_saturday": "no",
"emergency_same_day": "yes",
"languages": ["Spanish"],
"services": ["Cleanings", "Fillings", "Crowns", "Invisalign", "Emergency care"],
"providers": ["Dr. Jane Rivera"],
"evidence": [
{ "field": "insurance_accepted", "quote": "We are in-network with Delta Dental, Cigna and MetLife.", "url": "https://brightsmilefamilydentistry.com/insurance" },
{ "field": "accepting_new_patients", "quote": "Now welcoming new patients of all ages.", "url": "https://brightsmilefamilydentistry.com/" }
],
"confidence": "high",
"pages_read": ["https://brightsmilefamilydentistry.com/", "https://brightsmilefamilydentistry.com/insurance", "https://brightsmilefamilydentistry.com/new-patients"],
"charged": true
}

Every field is "unknown", null or empty when the site doesn't say. Nothing is guessed.

Practices whose website can't be found or loaded come back with status: "website_not_found" or "fetch_failed" and are not charged. Neither are pages that turn out to be a directory or a different business (status: "not_practice_site"), practices where the extraction itself failed (status: "extraction_failed", or "error" for any other unexpected failure; the row's error says why), practices after the first 3 of a run on the free Apify plan without your own Anthropic key (status: "skipped_free_plan", see Pricing), practices not started because the Actor's own Claude key ran out of budget or became invalid (status: "extraction_unavailable"; the run then ends as failed, so try again later, resurrect the run, or pass your own anthropicApiKey; a resurrected run retries these practices), or practices not started because most of the earlier ones, on the Actor's own key, turned out not to be the practices' own sites (status: "skipped_unusable_websites"; check the website values or pass your own anthropicApiKey).

Directory, listing and social network sites are never read as the practice: a website on one of them (Yelp, Facebook, Zocdoc, ...) is not read at all, and the practice comes back as status: "not_practice_site", not charged. If booking happens in a widget embedded in the site, online_booking is "yes" and online_booking_url is the site page with the widget's #anchor.

In the Apify Console the dataset has two table views: Overview (status, insurance, Medicaid, new patients, booking, phone, address) and Details (hours, services, providers, languages, financing, evidence quotes, pages read).

Practice types

Set practiceType once per run to say what kind of practices the list holds. It tunes what "insurance", "new patients" and "booking" mean; the output fields are the same for every type.

practiceTypeTypeWhat it looks for
dental (default)DentalDental plans (Delta Dental, Cigna Dental, ...)
orthodonticsOrthodonticsDental plans with orthodontic benefits; in-house payment plans as financing; braces and aligners as services
chiropracticChiropracticHealth plans, plus Medicare, workers' comp and auto / personal-injury claims
veterinaryVeterinaryPet insurers the clinic names or bills directly (Trupanion, Nationwide, Healthy Paws); "new clients" count as new patients; wellness plans as membership plans; accepts_medicaid is always "unknown"
med_spaMed spaInsurance only if the site names it; financing such as Cherry, CareCredit or PatientFi; membership programs; booking on Boulevard, Vagaro or Mindbody
physical_therapyPhysical therapyMedicare, workers' comp, auto / personal injury; "no referral needed" or "direct access" as a service
optometryOptometryVision plans (VSP, EyeMed, Davis Vision, Spectera) and medical plans
dermatologyDermatologyMedical insurance, including Medicare; cosmetic services are often self-pay, so only what the site states
mental_healthMental health / therapyInsurance panels; out-of-network (superbill); "accepting new clients"; booking on SimplePractice, Headway or Alma; telehealth as a service

Three ways to give it practices

  1. Names and websites. { "name": "Seattle Sound Dental", "website": "https://seattlesounddental.com/" }. The cheapest and most reliable way: the Actor reads the site you give it. Add city/state to help confirm the site is the practice's own.
  2. Names and city/state. { "name": "Seattle Sound Dental", "city": "Seattle", "state": "WA" }. The Actor looks the practice up on Google Maps (Google Maps Scraper runs in your Apify account) and uses the website of the listing that matches the name and city, or the phone number (add phone for practices that changed their name). Closed places and directory sites such as Facebook, Yelp or Psychology Today are skipped. A practice needs a city or a 10-digit phone to be looked up, and a state, if you give one, has to be a US state or DC, written as WA or Washington: a practice that doesn't meet that is not looked up, costs nothing on Google Maps, and its error says what is missing. With no match the practice comes back as website_not_found, not charged, and error says why.
  3. Rows from Google Maps Scraper. Pass the items of a Google Maps Scraper (compass/crawler-google-places) run as they are, null values included. title, website, phone, address, city, state and placeId are mapped, and the reviews and images are dropped. A listing with no website comes back as website_not_found, not charged, with the error "The Google Maps listing has no website."; it is not looked up again.

Input

{
"practices": [
{ "name": "Seattle Sound Dental", "website": "https://seattlesounddental.com/", "city": "Seattle", "state": "WA" },
{ "name": "Revive Dental Group", "website": "https://www.revivedentalgroup.com/", "city": "Bellevue", "state": "WA" }
]
}
  • practices (required): name plus either website or city/state, or rows from Google Maps Scraper (see above). Without a website the Actor looks the practice up on Google Maps by name and city/state; with one, city/state help confirm the site is the practice's own. Any extra fields (npi, phone, address) are passed through in input.
  • practiceType: dental (default), orthodontics, chiropractic, veterinary, med_spa, physical_therapy, optometry, dermatology or mental_health. One type per run.
  • anthropicApiKey: your own Anthropic API key, billed to you by Anthropic. Leave it empty on paid plans. On the free Apify plan the first 3 practices of a run are enriched on the Actor's key, reading at most 2 pages per site and 8,000 characters per page whatever the other settings say, and the rest come back as skipped_free_plan, so add your key to enrich all of them. It is also needed for Sonnet and Opus and for more than 5 pages per site, more than 15,000 characters per page or a higher reasoning effort. Without it the Actor runs Haiku on its own key, with maxPagesPerSite capped at 5, maxCharsPerPage at 15,000 and effort at low.
  • model: claude-haiku-5-5 (default), claude-sonnet-5-5, or claude-opus-5-5 (most thorough). Sonnet and Opus run only with your own key in anthropicApiKey; without one the Actor uses Haiku.
  • effort: low (default) / medium / high.
  • maxPagesPerSite (default 4), maxCharsPerPage (default 12000), searchForWebsite (default true: look up missing websites on Google Maps; see Pricing), concurrency (default 3), proxyConfiguration.

Use it from an AI agent

Published Actors are available as tools through Apify's MCP server. Ask your agent: "Which of these three dentists in Austin take Cigna and accept new patients?" and it can call this Actor with the practice list and read the answer.

Pricing

$0.02 per enriched practice. Practices whose website couldn't be found or read, sites that turn out not to be the practice's own, and practices where the extraction fails are free. If Apify restarts a run (a server migration, or Resurrect), practices that already have a row are skipped and not charged again. On the free Apify plan, the first 3 practices of a run are enriched on the Actor's own key (Haiku, reading at most 2 pages per site and 8,000 characters per page) and billed like any other enriched practice; the rest come back as status: "skipped_free_plan" with an explanation; add your own Anthropic key (anthropicApiKey) to enrich all of them. Paid Apify plans don't need a key.

Finding missing websites costs extra, and only for practices that need it. When a practice has no website, the Actor looks it up on Google Maps by running Google Maps Scraper in your Apify account: up to 3 places at $0.004 each on the free plan (less on paid plans), so at most $0.012 per practice looked up, billed by that Actor on top of this Actor's price. Practices that come with a website, and rows from Google Maps Scraper (which are not searched again), cost nothing extra. Turn the lookup off with searchForWebsite: false.

How accurate is it?

Tested on every dental practice with a findable website in King County, WA (about 600 practices), extracted once with Haiku and once with Opus from the same pages:

  • The two models agreed on new-patient status for 93% of practices, on the insurance list for 88%, on phone for 99% and on the booking link for 91%.
  • Checking 20 of the disagreements by hand against the pages, and counting answers where the two models agree as correct, Haiku's key facts were right about 86% of the time and Opus's about 89%, within the margin of a 20-row check.
  • The key facts (insurance, new patients, booking, hours) come with a verbatim quote and the page it was taken from, so you can verify them.

These numbers were measured on dental practices only. The other practice types are not benchmarked yet.

Typical uses

  • Patient-facing agents and chatbots answering "find me a dentist (or a vet, chiropractor or therapist) that takes my insurance".
  • Lead lists: filter NPI or Google Maps exports by insurance network, membership plans, or Saturday hours.
  • Insurance networks and DSOs checking what practices publicly advertise.
  • Directory sites keeping "accepting new patients" and booking links current.

Notes

  • Reads only public pages of the practice's own site and keeps to a handful of pages per site.
  • The Google Maps lookup runs only on the Apify platform. Run elsewhere, practices without a website come back as website_not_found.
  • Sites whose pages have no readable text (built entirely in JavaScript, or behind a bot check) come back as fetch_failed and are not charged.
  • Extraction quality depends on what the site states. The evidence array tells you where the key facts came from so you can verify them.