# JobMD Medical Jobs Scraper 丁香人才网: Hospital Jobs & 医院招聘公告 Feed (`getascraper/jobmd-medical-jobs-scraper`) Actor

Scrape JobMD (丁香人才网, jobmd.cn) hiring-fair jobs and hospital hiring announcements (医院招聘公告). Salary split into CNY min and max, hospital grade (三甲), department, title level, education, full job text and optional full notice text. Filter by province or keyword, schedule for new-listing feeds.

- **URL**: https://apify.com/getascraper/jobmd-medical-jobs-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.60 / 1,000 hiring listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏥 JobMD Medical Jobs Scraper 丁香人才网: Hospital Jobs & 医院招聘公告 Feed

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#F0F9FA;border:1px solid #C5E4E8;border-top:4px solid #0E7C86;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Hospital hiring-fair jobs and hiring notices from JobMD, filtered the way you hire</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Collect medical jobs and official hospital hiring announcements from JobMD (丁香人才), with salary in numbers, hospital grade, department, education, and the full text. Schedule it and get only what is new.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5E4E8;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#0B5F67">🏥 Grade and department</span><br>
<span style="font-size:12px;color:#57534E">Filter by 三甲 and other hospital grades, employer type, department, and title level.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5E4E8;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0B5F67">💴 Salary in numbers</span><br>
<span style="font-size:12px;color:#57534E">Monthly CNY pay split into minimum and maximum, ready to sort and compare.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5E4E8;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#0B5F67">📣 Full hiring notices</span><br>
<span style="font-size:12px;color:#57534E">Application windows, status, applicant counts, attachments, and the whole notice text.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5E4E8;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#0B5F67">🔔 New-listing feed</span><br>
<span style="font-size:12px;color:#57534E">Schedule runs and receive only new or changed listings, tagged NEW or UPDATED.</span>
</td>
</tr>
</table>

**Turn JobMD (丁香人才, the medical recruitment platform of 丁香园 DXY) into a clean dataset of hospital jobs and hiring notices.** Export to CSV, Excel, JSON, Google Sheets, or your own database. No account on JobMD is needed.

### 🎯 Who uses this medical hiring data?

- **I am a medical recruiter or headhunter** who needs open hospital roles from the hiring fairs and every new 招聘公告 on the day it appears.
- **I run talent or market intelligence at a pharma or medtech company** and want to see which hospitals are hiring, where, and at what grade.
- **I advise graduates or run a university career center** and need current openings by city, degree, and specialty.
- **I research the Chinese healthcare labour market** and compare salaries, titles, and demand across provinces.

### 📦 What do you get?

The Actor has two modes.

- **Jobs from online hiring fairs.** Each job comes with the full description, monthly salary range in CNY, hospital grade, department, title level, education, experience, openings, benefits, and posting date. Fair jobs lean toward graduate and entry-level roles.
- **Hospital hiring announcements.** The official notices that hospitals and health commissions publish, covering experienced and senior hires too. Each one carries the application window, status, applicant count, employer labels, and, if you ask for it, the full notice text with attachment names and contact email.

Every record links back to its JobMD page, so you can verify or apply in one click.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0F9FA;border:1px solid #C5E4E8;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0E7C86;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Choose jobs or announcements, then add a keyword, province, hospital grade, or salary range.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F9FA;border:1px solid #C5E4E8;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0E7C86;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run it</span><br>
<span style="font-size:12px;color:#57534E">Ten listings by default in seconds. Raise the limit to collect thousands.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F9FA;border:1px solid #C5E4E8;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#0E7C86;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Use the data</span><br>
<span style="font-size:12px;color:#57534E">Download CSV, Excel, or JSON, or schedule runs for a live hiring feed.</span>
</td>
</tr>
</table>

### ⚙️ Input

Everything is optional. The default run returns ten current jobs.

| Field | Type | Required | Description |
|---|---|---|---|
| What to collect | enum | No | Jobs from online hiring fairs, or hospital hiring announcements. |
| Keyword | text | No | Chinese keyword such as 护士, 心内科 or 华西医院. Jobs mode searches titles and descriptions with JobMD's own loose word matching. Announcements mode keeps notices whose title or hospital name contains the text. |
| Province | enum | No | Only listings in this province, municipality, or region. |
| City or district contains | text | No | Keep listings whose location contains this text, for example 杭州 or 浦东. |
| Education level | enum | No | Education the job asks for, from junior college to doctorate. Jobs mode. |
| Employer type | enum | No | Public hospital, private hospital, clinic, community health center, pharma company, and more. Jobs mode. |
| Hospital grade | array of enum | No | Keep hospitals of these grades, such as 三甲 or 二乙. Announcements are matched on the tier only. |
| Experience required | enum | No | No experience, current students, fresh graduates, or 1 to 10+ years. Jobs mode. |
| Job type | enum | No | Full-time, campus recruitment, internship, or part-time. Jobs mode. |
| Department or specialty contains | text | No | Keep jobs whose department, major, or title contains this text. Jobs mode. |
| Title level | array of enum | No | Junior, intermediate, or not graded. Jobs mode. |
| Minimum monthly salary (CNY) | integer | No | Keep jobs whose top monthly pay reaches this amount. Negotiable salaries are left out when a limit is set. |
| Maximum monthly salary (CNY) | integer | No | Keep jobs whose bottom monthly pay does not exceed this amount. |
| Urgent hiring only | boolean | No | Keep only jobs the employer marked as urgent. |
| Posted within days | integer | No | Keep listings first published in the last N days. Works for jobs and announcements. |
| Which hiring fairs | enum | No | Ongoing, upcoming, ended, or all fairs. Jobs mode. |
| Specific fair IDs | array of text | No | Read only these fairs. The ID is the number in a JobMD fair address. Jobs mode. |
| Announcement status | enum | No | Open for applications, not started, closed, or all. Announcements mode. |
| Announcement type | enum | No | Hospital recruitment, residency training (规培), or all. Announcements mode. |
| Employer label | array of enum | No | Fudan top 100 (复旦百强), military hospital (部队医院), or health commission (卫健委). Announcements mode. |
| Include full notice text | boolean | No | Adds the full notice text, applicant count, attachment names, and contact email. Slower. Announcements mode. |
| Only new or changed listings | boolean | No | Return only what is new or changed since the last run with the same monitor name. |
| Monitor name | text | No | A label for the saved search, so different filter sets keep separate histories. |
| Maximum results | integer | No | Stop after this many listings. Default 10, up to 10,000. |
| Proxy configuration | object | No | Connection settings. The default works for almost every run. |

### 🧾 Data table

Fields that JobMD does not publish for a listing are left out of that record instead of being filled with placeholders.

**Jobs mode**

| Field | Type | Description |
|---|---|---|
| `jobId` | text | JobMD job number. |
| `title` | text | Job title. |
| `url` | text | Link to the job on JobMD. |
| `employerName` | text | Hospital or company name. |
| `employerId` | text | JobMD employer number. |
| `employerType` | text | Employer type, such as 公立医院 or 民营医院. |
| `hospitalLevel` | text | Hospital grade, such as 三甲 or 二乙. |
| `employerCategory` | text | Employer type and grade combined. |
| `employerSize` | text | Employee count range. |
| `employerLocation` | text | Where the employer is based. |
| `location` | text | Where the job is located. |
| `department` | text | Department or function. |
| `seniority` | text | Title level, such as 初级 or 中级. |
| `major` | text | Preferred major. |
| `education` | text | Education required. |
| `experience` | text | Experience required. |
| `jobType` | text | Full-time, campus recruitment, internship, or part-time. |
| `headcount` | integer | Number of openings. |
| `salaryText` | text | Salary as shown, for example 8k-10k. |
| `salaryNegotiable` | boolean | True when the employer lists the salary as negotiable. |
| `salaryMin` | integer | Lowest monthly salary. |
| `salaryMax` | integer | Highest monthly salary. |
| `salaryCurrency` | text | Always CNY when a salary is present. |
| `salaryPeriod` | text | Always month when a salary is present. |
| `benefits` | array | Listed benefits. |
| `description` | text | Full job description and requirements. |
| `englishRequirement` | text | English level asked for. |
| `isUrgent` | boolean | Present when the employer marked the job urgent. |
| `postedAt` | text | When the job was first published. |
| `fairId` | integer | Hiring fair the job was read from. |
| `fairName` | text | Name of that fair. |
| `changeType` | text | NEW or UPDATED, when monitoring is on. |
| `source` | text | Which part of JobMD the record came from. |
| `scrapedAt` | text | When the record was collected. |

**Announcements mode**

| Field | Type | Description |
|---|---|---|
| `announcementId` | text | JobMD notice number. |
| `title` | text | Notice title. |
| `url` | text | Link to the notice on JobMD. |
| `employerName` | text | Hospital or authority name. |
| `employerId` | text | JobMD employer number, when the employer has a profile. |
| `hospitalLevel` | text | Public hospital tier, such as 公立三级. |
| `employerLabels` | array | Labels such as 复旦百强, 部队医院, 卫健委. |
| `location` | text | City and district. |
| `announcementType` | text | Hospital recruitment or residency training. |
| `status` | text | open, upcoming, or ended. |
| `applyStart` | text | First day to apply. |
| `applyEnd` | text | Last day to apply. |
| `publishedAt` | text | When the notice was published. |
| `applicantsCount` | integer | Applicants so far. Needs the full notice text option. |
| `contentText` | text | Full notice text. Needs the full notice text option. |
| `attachments` | array | Attachment file names. Needs the full notice text option. |
| `contactEmail` | text | Contact email, when the notice lists one. |
| `provinceName` | text | Province name. |
| `provinceCode` | text | Province code. |
| `changeType` | text | NEW or UPDATED, when monitoring is on. |
| `source` | text | Which part of JobMD the record came from. |
| `scrapedAt` | text | When the record was collected. |

### 📋 Output example

```json
{
  "jobId": "1540318",
  "title": "病房护士",
  "url": "https://www.jobmd.cn/work/1540318.htm",
  "employerName": "东阳亲和医院",
  "employerType": "民营医院",
  "hospitalLevel": "二级",
  "employerSize": "20~99人",
  "location": "金华市东阳市",
  "department": "内科护士",
  "seniority": "初级",
  "major": "护理学",
  "education": "大专",
  "experience": "应届生",
  "jobType": "全职",
  "headcount": 4,
  "salaryText": "6.5k-8.5k",
  "salaryMin": 6500,
  "salaryMax": 8500,
  "salaryCurrency": "CNY",
  "salaryPeriod": "month",
  "benefits": ["五险一金", "节日福利", "带薪年假", "工作餐"],
  "description": "工作内容：1. 严格执行护理核心制度……",
  "postedAt": "2026-10-06T01:35:44.000Z",
  "fairId": 1280
}
```

### 🔔 How monitoring works

Turn on **Only new or changed listings** and give the search a monitor name. The first run returns what matches and remembers it. Every later run returns only listings that are new or whose salary, openings, location, description, or deadline changed. Each record is tagged `NEW` or `UPDATED`. Schedule the Actor daily and you have a hiring feed for any province, grade, or keyword.

### 💰 Pricing

Pricing is pay per result. Runs that return nothing cost nothing for results. There is no subscription.

### ⭐ Enjoying JobMD Medical Jobs Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#F0F9FA;border:1px solid #C5E4E8;border-left:5px solid #0E7C86;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Stopped checking hospital recruitment pages by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other medical recruiters and talent teams find it. Your feedback also tells us which filters to add next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0E7C86;border:1px solid #0E7C86;border-left:5px solid #0E7C86;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/jobmd-medical-jobs-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips

- Start with the default ten results, check the fields you need, then raise the limit.
- Use Chinese keywords such as 护士 or 麻醉. In jobs mode JobMD matches them loosely across titles and descriptions.
- To compare pay, set a minimum monthly salary. Jobs with a negotiable salary are then left out.
- For a daily feed of one province, turn on monitoring and give each province its own monitor name.
- For senior and experienced hires, use announcements mode with the full notice text, since notices list the posts, requirements, and deadlines.

### ❓ FAQ

**丁香人才网的医院招聘公告怎么批量导出？**
Choose "Hospital hiring announcements", pick a province or status, and run. You get a table with employer, hospital grade, application window, and link. Turn on the full notice text option to add the whole notice, applicant count, and attachment names.

**丁香人才网医生护士职位怎么批量下载？**
Leave the mode on "Jobs from online hiring fairs", add a keyword such as 护士 or 医师, choose a province or hospital grade, and run. Each job includes the full description, salary range, department, and education.

**Does it need a JobMD account?**
No. It reads only the pages and listings that JobMD shows to any visitor.

**Why do some jobs have no salary numbers?**
Many employers mark pay as negotiable (面议). Those records carry `salaryNegotiable: true` and no salary figures, because nothing is made up.

**How do I get only new listings?**
Turn on "Only new or changed listings", set a monitor name, and schedule the Actor. Each later run returns only what changed.

**How many results can I collect?**
Up to 10,000 per run. Announcements include closed notices from earlier hiring seasons. Jobs come from the fair you select, and a large fair holds several thousand openings.

### 🛡️ Responsible use

The Actor collects listings that JobMD shows publicly. It does not read private resumes or applicant data. Use the data in line with JobMD's terms and the privacy rules that apply to you.

### 🔗 Other actors

- [Zhaopin Scraper 智联招聘: China Jobs & Salary API](https://apify.com/getascraper/zhaopin-jobs-scraper) ↗ - General China jobs with normalized salary and hiring-change tracking.
- [51job Scraper 前程无忧: China Jobs, Salary Data & Recruiter Scores](https://apify.com/getascraper/51job-scraper) ↗ - Jobs, salary, and employer context from 51job.
- [Liepin Scraper 猎聘: China Jobs, Salary Ranges & Change Tracking](https://apify.com/getascraper/liepin-scraper) ↗ - White-collar roles and salary ranges from Liepin.
- [Yingjiesheng Scraper 应届生求职网: China Graduate Jobs & Campus Talks](https://apify.com/getascraper/yingjiesheng-graduate-jobs-scraper) ↗ - Graduate jobs and campus talks across China.
- [Jobui Scraper 职友集: China Jobs with CNY Salary & Employer Data](https://apify.com/getascraper/jobui-china-jobs-scraper) ↗ - China jobs with CNY salary and employer data.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/jobmd-medical-jobs-scraper/changelog.md

# Actor input Schema

## `mode` (type: `string`):

Medical jobs from JobMD online hiring fairs (full descriptions, salary, hospital grade), or the hospital hiring announcements that employers publish (deadlines, applicant counts, full notice text).

## `keyword` (type: `string`):

Chinese keyword such as 护士, 心内科 or 华西医院. Jobs mode searches job titles and descriptions with JobMD's own loose word matching. Announcements mode keeps notices whose title or hospital name contains the text. Leave empty for everything.

## `province` (type: `string`):

Only listings located in this province, municipality or region. Leave on Anywhere for all of China.

## `city` (type: `string`):

Keep only listings whose location text contains this text, for example 杭州 or 浦东. Useful for cities because the site only filters by province.

## `education` (type: `string`):

Education the job asks for. Applies to the jobs mode only.

## `hospitalType` (type: `string`):

Kind of employer, such as public hospital, private hospital, clinic or pharma company.

## `hospitalLevels` (type: `array`):

Keep hospitals of these Chinese grades. Tier 3 Grade A (三甲) is the top grade. Announcements are matched on the tier (三级, 二级, 一级) only.

## `experience` (type: `string`):

Experience level the job asks for. Most fair jobs are aimed at graduates.

## `jobType` (type: `string`):

Full-time, campus recruitment, internship or part-time.

## `department` (type: `string`):

Keep jobs whose department, major or title contains this text, for example 内科, 麻醉 or 药学.

## `seniority` (type: `array`):

Professional title level the job is aimed at.

## `minMonthlySalary` (type: `integer`):

Keep jobs whose top monthly salary reaches at least this amount. Jobs with negotiable salary are left out when a salary limit is set.

## `maxMonthlySalary` (type: `integer`):

Keep jobs whose bottom monthly salary does not exceed this amount. Jobs with negotiable salary are left out when a salary limit is set.

## `urgentOnly` (type: `boolean`):

Keep only jobs the employer marked as urgent.

## `postedWithinDays` (type: `integer`):

Keep only listings first published in the last N days. Applies to both jobs and announcements.

## `jobFairs` (type: `string`):

Jobs are read from JobMD online hiring fairs. Ongoing fairs hold the freshest jobs, ended fairs keep their archives.

## `fairIds` (type: `array`):

Optional numeric JobMD fair IDs (the number in a medical-job-fair address). When set, only these fairs are read.

## `announcementStatus` (type: `string`):

Whether the application window is open, not started yet or already closed.

## `announcementType` (type: `string`):

Regular hospital recruitment notices or resident standardized training (规培) notices.

## `employerLabels` (type: `array`):

Keep notices from employers carrying one of these labels.

## `includeAnnouncementDetails` (type: `boolean`):

Open every announcement to add its full text, applicant count, attachment names and contact email. Slower, one extra request per notice.

## `onlyNewSinceLastRun` (type: `boolean`):

Return only listings that are new or changed since the previous run with the same monitor name. Each record then carries a changeType of NEW or UPDATED. Schedule the Actor to build a hiring feed.

## `monitorScope` (type: `string`):

A label for this saved search. Use a different name for each filter combination so their histories stay separate.

## `maxItems` (type: `integer`):

Stop after this many listings. Raise it once you are happy with the filters.

## `proxyConfiguration` (type: `object`):

JobMD is public and normally answers a direct connection. If it keeps refusing, the Actor switches to a China residential proxy by itself when your plan includes one.

## Actor input object example

```json
{
  "mode": "jobs",
  "keyword": "",
  "province": "",
  "city": "",
  "education": "",
  "hospitalType": "",
  "hospitalLevels": [],
  "experience": "",
  "jobType": "",
  "department": "",
  "seniority": [],
  "urgentOnly": false,
  "jobFairs": "ongoing",
  "fairIds": [],
  "announcementStatus": "open",
  "announcementType": "all",
  "employerLabels": [],
  "includeAnnouncementDetails": false,
  "onlyNewSinceLastRun": false,
  "monitorScope": "default",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "jobs",
    "keyword": "",
    "province": "",
    "city": "",
    "education": "",
    "hospitalType": "",
    "hospitalLevels": [],
    "experience": "",
    "jobType": "",
    "department": "",
    "seniority": [],
    "urgentOnly": false,
    "jobFairs": "ongoing",
    "fairIds": [],
    "announcementStatus": "open",
    "announcementType": "all",
    "employerLabels": [],
    "includeAnnouncementDetails": false,
    "onlyNewSinceLastRun": false,
    "monitorScope": "default",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/jobmd-medical-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "jobs",
    "keyword": "",
    "province": "",
    "city": "",
    "education": "",
    "hospitalType": "",
    "hospitalLevels": [],
    "experience": "",
    "jobType": "",
    "department": "",
    "seniority": [],
    "urgentOnly": False,
    "jobFairs": "ongoing",
    "fairIds": [],
    "announcementStatus": "open",
    "announcementType": "all",
    "employerLabels": [],
    "includeAnnouncementDetails": False,
    "onlyNewSinceLastRun": False,
    "monitorScope": "default",
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/jobmd-medical-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "jobs",
  "keyword": "",
  "province": "",
  "city": "",
  "education": "",
  "hospitalType": "",
  "hospitalLevels": [],
  "experience": "",
  "jobType": "",
  "department": "",
  "seniority": [],
  "urgentOnly": false,
  "jobFairs": "ongoing",
  "fairIds": [],
  "announcementStatus": "open",
  "announcementType": "all",
  "employerLabels": [],
  "includeAnnouncementDetails": false,
  "onlyNewSinceLastRun": false,
  "monitorScope": "default",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/jobmd-medical-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/jobmd-medical-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CVBBZgba1OgDc2Dal/builds/bcjzQJXc5dYibdk5x/openapi.json
