PracticeLink Physician Jobs Search Scraper avatar

PracticeLink Physician Jobs Search Scraper

Pricing

from $2.99 / 1,000 practicelink job records

Go to Apify Store
PracticeLink Physician Jobs Search Scraper

PracticeLink Physician Jobs Search Scraper

Scrape physician and healthcare job listings from PracticeLink.com. Extract detailed postings including employer info, specialty, location, recruitment type, and categories with advanced pagination handling.

Pricing

from $2.99 / 1,000 practicelink job records

Rating

0.0

(0)

Developer

Jobs API

Jobs API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

PracticeLink Jobs Search Scraper

This Actor collects complete, verified public physician and healthcare job postings from PracticeLink. It uses official PracticeLink HTTPS pages only: the search form is submitted directly, result cards are parsed from HTML, and each posting is enriched from its official detail page using JobPosting JSON-LD plus semantic HTML.

Every run is bounded by item, candidate, page, request, and per-request timeout limits. Records are buffered and written only after the detail page passes identity, canonical URL, source-record, HTTP, rich-description, and more-than-20-meaningful-source-field checks. If the public site returns an access-control page or incomplete content, the Actor fails closed and writes a diagnostic rather than inventing a row.

Input modes

  • search: submit one keyword/specialty search. Exact specialties such as family medicine use the PracticeLink specialty selector.
  • searchMultiple: submit each value in searchQueries (or queries), sharing the profession and location filters.
  • single: fetch one exact public job URL from jobUrl.
  • multiple: fetch exact public job URLs from jobUrls or jobs.
  • startUrls: mix official filtered search URLs and official job URLs.

The compatibility modes jobUrl and jobUrls are accepted and normalized to single or multiple. query, keyword, state, maxJobs, and timeoutSecs are also accepted as aliases. This implementation does not launch a browser or use a proxy.

Useful limits are maxItems, maxCandidates, maxPages, maxRequests, and timeoutMs. The checked-in primary input requests three family-medicine jobs in Texas. Public input does not expose retry, proxy, cookie, fixture, debug, or temporary context controls.

Output

Complete dataset rows include:

  • stable PracticeLink job identity and official detail/canonical URLs;
  • title, employer, facility, location, state, specialty, provider type, recruitment labels, employment, remote/telemedicine, salary, and address fields;
  • normalized dates, application links, contact-redaction signals, external links, and source-backed JSON-LD;
  • rich plain-text, HTML, section, heading, bullet, responsibility, benefit, and qualification fields;
  • request receipt, HTTP status, retrieval timestamps, and verification flags.

Published email addresses and telephone numbers are redacted from descriptions and nested source evidence. The key-value store contains RUN_SUMMARY, RUN_DIAGNOSTICS, RUN_METADATA, and RUN_HEALTH, including request receipts, execution metadata, source transport, counts, status, and omission diagnostics.

Local commands

npm ci
npm run check
npm test
npx --yes apify-cli validate-schema .actor/input_schema.json
npx --yes apify-cli run --resurrect --input-file INPUT.json
npm run validate -- storage

For safe local validation, confirm the selected relative storage directory and legacy apify_storage are absent before running; never use --purge or reuse an existing dataset directory. The validator accepts the path argument (for example, npm run validate -- storage-practicelink-final-20260926-01) and rejects missing required fields, duplicate records, invalid URLs/dates, placeholder values, unverified rows, insufficient meaningful source fields, and inconsistent run counts.

Source and compliance

The Actor uses PracticeLink's public search and detail routes over native HTTPS with ordinary request headers and one attempt per request. It does not use third-party mirrors, alternate transports, a proxy, browser automation, CAPTCHA solving, or access-control bypasses. HTTP 401, 403, 429, 451, or visible source-authored denial/CAPTCHA/human-verification/security-challenge content is terminal SKIPPED; requests stop, staged rows are discarded, and receipts/evidence are preserved. Generic transport failures are DEFERRED, not treated as proof of a source block. Search and detail failures do not produce partial or fabricated records.