# YTJobs Scraper: YouTube Video Editor Jobs, Pay and New Alerts (`getascraper/ytjobs-scraper`) Actor

Scrape YTJobs (ytjobs.co), the YouTube job board: video editor, thumbnail designer, scriptwriter and other creator jobs with pay as yearly and hourly figures, channel subscribers, skills and exact posting time. Monitor mode saves only new jobs; channels mode lists hiring YouTube channels.

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

## Pricing

from $1.90 / 1,000 job postings

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

## 🎬 YTJobs Scraper: YouTube Video Editor Jobs, Pay and New Alerts

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FDF3F2;color:#1C1917;border:1px solid #F5CDC9;border-top:4px solid #D93025;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every YouTube creator job on ytjobs.co, with pay you can compare</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Video editor, thumbnail designer, scriptwriter and channel manager jobs with yearly and hourly pay, channel size, niche and posting time. Schedule it and get only the new ones.</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;color:#1C1917;border:1px solid #F5CDC9;border-top:none;border-radius:0 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3231B">💵 Pay you can compare</span><br>
<span style="font-size:12px;color:#57534E">Yearly and hourly figures on every paid job, so one pay floor covers full-time and part-time.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #F5CDC9;border-top:none;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3231B">🔁 Only new jobs</span><br>
<span style="font-size:12px;color:#57534E">Monitor mode remembers what it saved. Scheduled runs return fresh jobs only.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #F5CDC9;border-top:none;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3231B">📺 Channel size and niche</span><br>
<span style="font-size:12px;color:#57534E">Subscribers, video styles and niches on every row. Filter by channel size.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;color:#1C1917;border:1px solid #F5CDC9;border-top:none;border-left:none;border-radius:0 0 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3231B">📇 Hiring channel leads</span><br>
<span style="font-size:12px;color:#57534E">A directory of 6,000+ YouTube channels that hire, with their open job counts.</span>
</td>
</tr>
</table>

YTJobs Scraper collects job posts from ytjobs.co, the job board of the YouTube industry. You get every open job, or only the ones that fit you, as clean rows for a spreadsheet or an alert.

### 🔍 What does YTJobs Scraper do?

It reads the ytjobs.co board and returns one row per job:

- **The job:** title, role, job type, remote, hybrid or on-site, location, featured flag, open or closed status and the exact posting time.
- **The pay:** the posted range in US dollars, plus yearly and hourly figures on a common basis. A $45 to $65 hourly part-time job and a $90,000 full-time salary sit side by side.
- **The channel:** name, YouTube link and handle, subscribers, views, video count, video styles (Documentary, Faceless, Shorts/Reels and more) and niches (Gaming, Education, Crime and more), plus how many jobs it has open right now.
- **How to apply:** easy apply on ytjobs.co, or an outside application. With job details on, the application form link found in the description is returned too.

Turn on **job details** for the full description, expiry date, start date, experience, required languages, skills (AI tools marked), referral bonus and the example videos the employer attached. Turn on **channel profile** for exact channel statistics and the channel's newest videos.

Two more modes cover recurring work. **Monitor** saves only jobs that are new since your last run, so an hourly schedule never pays twice for the same job. **Channels** lists the hiring YouTube channels in the ytjobs.co directory as a lead list.

### 👥 Who uses it

- **Video editors and designers:** set a monitor for Video Editor and Thumbnail Designer jobs paying $40 an hour or more, and get only the jobs posted since the last run.
- **Talent agencies and editing studios:** see which channels with 100K+ subscribers are hiring editors, and pitch them the same day.
- **Recruiters and sales teams:** use channels mode as a list of YouTube channels that hire, with size, website and open job count.
- **Creator economy analysts:** pull the whole board each week to compare pay by role and job type, and track which AI tools employers ask for.

### 🚀 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:#FDF3F2;color:#1C1917;border:1px solid #F5CDC9;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D93025;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a mode and filters</span><br>
<span style="font-size:12px;color:#57534E">Jobs, monitor or channels. Add roles, a pay floor, channel size or skills, or paste job links.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDF3F2;color:#1C1917;border:1px solid #F5CDC9;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D93025;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run it or schedule it</span><br>
<span style="font-size:12px;color:#57534E">A run over the whole board takes seconds. Schedule monitor mode hourly or daily for alerts.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDF3F2;color:#1C1917;border:1px solid #F5CDC9;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D93025;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or connect</span><br>
<span style="font-size:12px;color:#57534E">Download Excel, CSV or JSON, or send new jobs to Google Sheets, Slack or email with Apify integrations.</span>
</td>
</tr>
</table>

The default input saves 20 open jobs from the board with no add-ons. Raise **Maximum rows** to 500 to collect the whole board.

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| What to collect | enum | No | Jobs (default), Monitor (only new or changed jobs) or Channels (hiring channel directory). |
| ytjobs.co job or channel links | array of URLs | No | A job link returns that job, even if closed. A channel link limits the run to that channel's jobs. |
| Channels | array of strings | No | Only jobs from these channels: ytjobs.co channel link or id, or a YouTube @handle. |
| Roles | array of enums | No | Video Editor, Creative Director, Thumbnail Designer, Channel Manager, YouTube Strategist, Scriptwriter, YouTube Producer, Voice Over, Other role. Pick several. |
| Job types | array of enums | No | Full-time, part-time or per project. |
| Work location | array of enums | No | Remote, hybrid or on-site. |
| Keyword | string | No | Matches title, channel name, role, video styles and niches. Commas mean any of. With job details on, the description too. |
| Featured jobs only | boolean | No | Only jobs the employer featured. |
| Few applicants only | boolean | No | The site's own low-applicants filter. |
| Include closed and expired jobs | boolean | No | Keep jobs that are no longer open. |
| Minimum yearly pay (USD) | integer | No | Only jobs whose pay can reach this yearly amount. Hourly rates count at 2,080 hours a year. |
| Minimum hourly pay (USD) | number | No | Only jobs whose pay can reach this hourly rate. |
| Only jobs that list pay | boolean | No | Skip jobs without a pay amount. |
| Posted within the last N days | integer | No | Only recent jobs, by exact posting time. |
| Minimum experience asked for | number | No | Only jobs asking for at least this much experience. |
| Maximum experience asked for | number | No | Only jobs asking for at most this much experience. |
| Skills | array of strings | No | Only jobs listing one of these skills, for example Premiere Pro. |
| Required languages | array of strings | No | Only jobs requiring one of these languages. |
| Video styles | array of strings | No | Only channels making these kinds of videos, for example Documentary. |
| Channel niches | array of strings | No | Only channels in these niches, for example Gaming. |
| Minimum channel subscribers | integer | No | Only channels with at least this many subscribers. |
| Maximum channel subscribers | integer | No | Only channels with at most this many subscribers. |
| Include job details | boolean | No | Full description, apply form link, dates, skills, languages, experience, referral bonus and example videos. |
| Include channel profile | boolean | No | Exact subscribers, views, video count, website, description, country and jobs posted. Charged once per channel per run. |
| Include channel's recent videos | boolean | No | The channel's newest videos with views, likes and comments. |
| Recent videos per channel | integer | No | How many recent videos to include. |
| Maximum rows | integer | No | The most rows a run saves. 0 means no limit. |
| Monitor name | string | No | Keeps the memory of separate monitors apart. |
| Changes to save | array of enums | No | New, updated, closed or reopened jobs. |
| First run only remembers the current jobs | boolean | No | The first monitor run saves nothing and only remembers today's jobs. |
| Missed runs before a job counts as closed | integer | No | How many runs a job may be missing before it is reported closed. |
| Proxy | object | No | Not needed in normal use. |

### 📤 Output

One row per job (or per channel in channels mode). A part-time job with job details on:

```json
{
  "recordType": "job",
  "jobId": "45867",
  "jobUrl": "https://ytjobs.co/job/45867",
  "title": "Video Editor for science and philosophy channel",
  "status": "active",
  "isActive": true,
  "role": "Video Editor",
  "jobType": "Part-time",
  "locationType": "Remote",
  "location": "Netherlands",
  "payMin": 45,
  "payMax": 65,
  "payUnit": "hour",
  "payCurrency": "USD",
  "payYearlyMin": 93600,
  "payYearlyMax": 135200,
  "payHourlyMin": 45,
  "payHourlyMax": 65,
  "payHoursPerYearAssumed": 2080,
  "isFeatured": false,
  "easyApply": true,
  "applyMethod": "easy-apply",
  "channelName": "Essentia Foundation",
  "employerType": "youtube-channel",
  "channelUrl": "https://youtube.com/@essentiafoundation",
  "channelHandle": "@essentiafoundation",
  "channelSubscribers": 297000,
  "channelSubscribersPrecision": "exact",
  "channelOpenJobs": 1,
  "videoStyles": ["Documentary", "Interview", "Podcast", "Shorts/Reels"],
  "channelCategories": ["Metaphysics", "philosophy", "Science & Technology", "Spirituality"],
  "postedAt": "2026-10-26T09:40:00Z",
  "postedDate": "2026-10-26",
  "detailsIncluded": true,
  "descriptionText": "About the Job\nWe are looking for an experienced video editor with a basic understanding of science, philosophy, and physics ...",
  "expiresAt": "2026-12-27T09:40:00Z",
  "startTiming": "ASAP",
  "videoFormat": "Long-form and Shorts",
  "minimumExperience": 3,
  "requiredLanguages": ["English"],
  "skills": ["Adobe After Effects", "Adobe Premiere Pro", "Anthropic Claude", "ElevenLabs"],
  "aiSkills": ["Anthropic Claude", "ElevenLabs", "Midjourney", "Runway", "Veo (by Google)"],
  "exampleVideos": [
    {
      "url": "https://youtube.com/watch?v=kbs2ozkXGjI",
      "title": "The Boundary Between You And The Universe | Karl Friston",
      "views": 212287,
      "likes": 3890,
      "channelAverageViews": 134409
    }
  ]
}
```

A value the site does not publish is left out of the row. You never get a fake 0 for subscribers or an empty channel link.

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| jobId, jobUrl, title | string | The job and its ytjobs.co page. |
| status, isActive | string, boolean | Open, closed or expired. |
| role, roleCode | string | Role label and the site's code. |
| jobType, jobTypeCode | string | Full-time, Part-time or Per project. |
| locationType, location, city, state, country | string | Remote, Hybrid or Onsite, and the place when given. |
| payMin, payMax, payUnit, payCurrency | number, string | Posted pay range per year, hour or project, in USD. |
| payYearlyMin, payYearlyMax, payHourlyMin, payHourlyMax | number | Pay on a yearly and an hourly basis. |
| payHoursPerYearAssumed | integer | Hours a year used to convert pay (2,080). |
| isFeatured, isLowCompetition, isStealth | boolean | Featured job, the site's Low Competition badge, hidden employer name. |
| easyApply, hasExternalApply, applyMethod | boolean, string | How candidates apply. |
| applyUrl, descriptionLinks | string, array | Application form link and every link in the description (job details). |
| channelName, companyId, employerType, channelVerified | string, boolean | The hiring channel or company. |
| channelAvatar, channelUrl, channelHandle, ytjobsChannelUrl | string | Channel picture, YouTube page, @handle and ytjobs.co page. |
| channelSubscribers, channelSubscribersPrecision | integer, string | Subscribers, rounded from the board or exact. |
| channelViews, channelVideoCount | integer | Channel views and video count. |
| channelOpenJobs, channelJobsPostedTotal | integer | Open jobs now, and jobs posted over time. |
| website, channelDescription, channelCountry | string | Employer website, description and country. |
| videoStyles, channelCategories | array | What the channel makes and its niches. |
| postedAt, postedDate | string | Posting time (ISO 8601 UTC) and date. |
| descriptionHtml, descriptionText, requirementsText, idealCandidateText | string | The job description (job details). |
| expiresAt, startTiming, videoFormat | string | Expiry, start timing, long-form or Shorts (job details). |
| minimumExperience, requiredLanguages, skills, aiSkills, referralBonus | number, array | Requirements and referral bonus (job details). |
| exampleVideos | array | Example videos with views and likes (job details). |
| channelVideosListed, channelLatestVideoDate, channelAverageViews, channelRecentVideos | integer, string, array | Channel activity (channel profile). |
| changeType, firstSeenAt, lastSeenAt, changedFields, previousValues, removedFromBoard, monitorName | string, array, object, boolean | What changed since the last run (monitor mode). |
| recordType, scrapedAt | string | job or channel, and when the run read the data. |

The Output tab has four views: **Jobs**, **Pay compared**, **Hiring channels** and **Changes since last run**.

### 🔁 Monitor mode

Pick **Monitor**, set your filters and schedule the Actor. Each run compares the board with what this monitor saw before:

- **New:** a job it has not seen.
- **Updated:** the title, pay, job type, location or featured status changed. The row lists the changed fields and their earlier values.
- **Closed:** the board marks the job closed, or it has left the board for the number of runs you set.
- **Reopened:** a closed job is open again.

New jobs are saved by default; tick the other changes if you want them. Each filter set keeps its own memory, and the monitor name keeps separate schedules apart. If the row limit stops a run early, the remaining changes are saved by the next run, never dropped.

### 💰 Pricing

This Actor uses pay per event pricing. You pay for each row saved, and a run that saves nothing costs nothing. Job details and channel profiles are optional add-ons, charged only when you switch them on: job details per job, and the channel profile once per channel per run, even when several jobs share that channel. There is no subscription.

Free plan runs are limited to 100 rows per run and 30 runs per 24 hours. Paid Apify plans have no such limits.

### ⭐ Enjoying YTJobs Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#FDF3F2;color:#1C1917;border:1px solid #F5CDC9;border-left:5px solid #D93025;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Did it put a good gig or a good lead in front of you first?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other editors, designers and recruiters find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#D93025;color:#FFFFFF;border:1px solid #D93025;border-left:5px solid #D93025;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/ytjobs-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

- For job alerts, use monitor mode with **First run only remembers the current jobs** on, then schedule it hourly. From the second run on you only get jobs that are really new.
- A pay floor compares the top of each posted range. Per-project jobs have no yearly or hourly figure, so they drop out when a pay floor is set.
- Skills, languages and experience come from the job details, so setting them turns job details on.
- Subscriber filters leave out agencies and brands that have no YouTube channel, because their size is unknown.

### ❓ FAQ

**How do I get only new YouTube editing jobs every day?**
Use monitor mode with the Video Editor role and schedule it daily. Each run saves only jobs the monitor has not seen before.

**Can I compare a full-time salary with an hourly rate?**
Yes. Every paid full-time and part-time job has yearly and hourly figures, converted at 2,080 hours a year. The hours used are stated in each row.

**Does it need a ytjobs.co account?**
No. It reads only what anyone can see on ytjobs.co without logging in. It cannot apply to jobs or read applicant numbers, which the site keeps private.

**What happens to closed jobs?**
By default only open jobs are saved. Turn on closed and expired jobs to keep them, or paste a job link to look up any job, open or closed.

**Can I find YouTube channels that are hiring?**
Yes. Channels mode lists the hiring channels in the ytjobs.co directory with subscribers, website, description and open job count.

### 🔗 Other actors

- [WeWorkRemotely Jobs Scraper: Remote Jobs, Salary and New Alerts](https://apify.com/getascraper/weworkremotely-jobs-scraper) ↗ - remote jobs from WeWorkRemotely with salary data and new-job alerts.
- [OnlineJobs.ph Scraper: Philippines Remote Jobs with Pay Filters](https://apify.com/getascraper/onlinejobs-ph-scraper) ↗ - remote freelance and part-time jobs with pay filters.
- [Web3Career Jobs Scraper: Crypto Jobs, Salary Data & New Alerts](https://apify.com/getascraper/web3career-jobs-scraper) ↗ - crypto and Web3 jobs with salary data.
- [ShopMy Scraper: Creator Product Picks, Brands, Prices & Clicks](https://apify.com/getascraper/shopmy-creator-scraper) ↗ - creator product picks and the brands behind them.
- [Loom Video Downloader: MP4 URL, Transcript, Captions & Metadata](https://apify.com/getascraper/loom-video-downloader) ↗ - Loom videos with transcripts and captions.

# Changelog

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

# Actor input Schema

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

Jobs: every matching job on the ytjobs.co board. Monitor: only jobs that are new (or changed) since your last run, for scheduled runs. Channels: the ytjobs.co directory of hiring YouTube channels, as a lead list.

## `startUrls` (type: `array`):

Optional. A job link (https://ytjobs.co/job/45013) returns that exact job, even if it is closed. A channel link (https://ytjobs.co/channel/1893) limits the run to that channel's jobs.

## `channels` (type: `array`):

Optional. Only jobs from these channels. Accepts a ytjobs.co channel link or id, or a YouTube handle such as @visualventure or https://youtube.com/@visualventure.

## `roles` (type: `array`):

Only jobs for these roles. Pick several at once (for example Video Editor and Thumbnail Designer). Leave empty for every role.

## `jobTypes` (type: `array`):

Full-time jobs show a yearly salary, part-time jobs an hourly rate, and per-project jobs a price per project. Leave empty for all types.

## `locationTypes` (type: `array`):

Remote, hybrid or on-site. Most YouTube jobs are remote. Leave empty for all.

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

Matches the job title, channel name, role, video styles and channel niches. Separate several words with commas to match any of them (for example: documentary, true crime). With job details on, the job description is searched too.

## `featuredOnly` (type: `boolean`):

Only jobs the employer paid to feature at the top of the board.

## `lowCompetitionOnly` (type: `boolean`):

Uses the site's own 'low on applicants' filter. ytjobs.co decides which jobs qualify; applicant numbers themselves are not public.

## `includeClosed` (type: `boolean`):

The board still lists some jobs that are closed or expired. Turn on to keep them (useful for hiring history); off returns open jobs only.

## `minYearlyPay` (type: `integer`):

Only jobs whose posted pay can reach this yearly amount. Hourly rates are compared at 2,080 hours a year (40 h x 52 weeks). Per-project jobs and jobs without pay are left out when this is set.

## `minHourlyPay` (type: `number`):

Only jobs whose posted pay can reach this hourly rate. Yearly salaries are divided by 2,080 hours. Per-project jobs and jobs without pay are left out when this is set.

## `payListedOnly` (type: `boolean`):

Skip jobs that do not show any pay amount.

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

Only jobs posted in the last N days, based on the exact posting time the site publishes.

## `experienceMin` (type: `number`):

Only jobs that ask for at least this much experience, as the employer set it on ytjobs.co. Jobs that state no experience are left out when this is set.

## `experienceMax` (type: `number`):

Only jobs that ask for at most this much experience, so you can find jobs you already qualify for. Jobs that state no experience are kept.

## `skills` (type: `array`):

Only jobs that list at least one of these skills, for example Premiere Pro, After Effects or ElevenLabs. Partial names match.

## `languages` (type: `array`):

Only jobs that require at least one of these languages, for example Spanish.

## `videoStyles` (type: `array`):

Only jobs whose channel makes these kinds of videos, for example Documentary, Faceless, Shorts/Reels, Gameplay or Podcast. Partial names match.

## `channelCategories` (type: `array`):

Only jobs from channels in these niches, for example Gaming, Education, Crime or Business and Finance. Partial names match.

## `minChannelSubscribers` (type: `integer`):

Only jobs from channels with at least this many YouTube subscribers.

## `maxChannelSubscribers` (type: `integer`):

Only jobs from channels with at most this many YouTube subscribers, for example to find smaller creators.

## `includeDetails` (type: `boolean`):

Adds the full description (HTML and plain text), apply form link found in the description, expiry date, start date, experience, languages, skills (with AI tools marked), referral bonus and example videos with view counts. One extra request per job.

## `includeChannel` (type: `boolean`):

Adds the hiring channel's exact subscribers, total views, video count, website, description, country and how many jobs it has posted on ytjobs.co. Charged once per channel per run, even when several jobs share the channel.

## `includeChannelVideos` (type: `boolean`):

Also adds the channel's newest videos listed on ytjobs.co with views, likes and comments, its latest upload date and average views. Turns on the channel profile.

## `maxChannelVideos` (type: `integer`):

How many of the channel's newest videos to include when recent videos are on.

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

The most rows this run saves (jobs, changes or channels). The board has a few hundred open jobs, so 500 covers all of them. 0 means no limit.

## `monitorName` (type: `string`):

Monitor mode only. A label for this monitor's memory, so two schedules with different purposes never mix. Runs with the same name and the same filters share one history.

## `monitorChangeTypes` (type: `array`):

New: jobs not seen before. Updated: title, pay, type, location or featured status changed. Closed: the job was closed or left the board. Reopened: a closed job is open again.

## `monitorBaselineFirstRun` (type: `boolean`):

On: the first run saves no rows and only remembers today's jobs, so later runs save truly new jobs only. Off: the first run saves the current jobs as new.

## `closedAfterMissedRuns` (type: `integer`):

A job that disappears from the board is reported closed after this many runs in a row without it. A job the board itself marks closed is reported at once.

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

Not needed in normal use: the Actor connects directly and switches to Apify datacenter proxy on its own if ytjobs.co refuses the connection. Set a proxy here only if you want to force one.

## Actor input object example

```json
{
  "mode": "jobs",
  "startUrls": [],
  "channels": [],
  "roles": [],
  "jobTypes": [],
  "locationTypes": [],
  "keyword": "",
  "featuredOnly": false,
  "lowCompetitionOnly": false,
  "includeClosed": false,
  "payListedOnly": false,
  "skills": [],
  "languages": [],
  "videoStyles": [],
  "channelCategories": [],
  "includeDetails": false,
  "includeChannel": false,
  "includeChannelVideos": false,
  "maxChannelVideos": 5,
  "maxItems": 20,
  "monitorName": "",
  "monitorChangeTypes": [
    "NEW"
  ],
  "monitorBaselineFirstRun": false,
  "closedAfterMissedRuns": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `rows` (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",
    "startUrls": [],
    "channels": [],
    "roles": [],
    "jobTypes": [],
    "locationTypes": [],
    "keyword": "",
    "featuredOnly": false,
    "lowCompetitionOnly": false,
    "includeClosed": false,
    "payListedOnly": false,
    "skills": [],
    "languages": [],
    "videoStyles": [],
    "channelCategories": [],
    "includeDetails": false,
    "includeChannel": false,
    "includeChannelVideos": false,
    "maxChannelVideos": 5,
    "maxItems": 20,
    "monitorName": "",
    "monitorChangeTypes": [
        "NEW"
    ],
    "monitorBaselineFirstRun": false,
    "closedAfterMissedRuns": 2,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/ytjobs-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",
    "startUrls": [],
    "channels": [],
    "roles": [],
    "jobTypes": [],
    "locationTypes": [],
    "keyword": "",
    "featuredOnly": False,
    "lowCompetitionOnly": False,
    "includeClosed": False,
    "payListedOnly": False,
    "skills": [],
    "languages": [],
    "videoStyles": [],
    "channelCategories": [],
    "includeDetails": False,
    "includeChannel": False,
    "includeChannelVideos": False,
    "maxChannelVideos": 5,
    "maxItems": 20,
    "monitorName": "",
    "monitorChangeTypes": ["NEW"],
    "monitorBaselineFirstRun": False,
    "closedAfterMissedRuns": 2,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/ytjobs-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",
  "startUrls": [],
  "channels": [],
  "roles": [],
  "jobTypes": [],
  "locationTypes": [],
  "keyword": "",
  "featuredOnly": false,
  "lowCompetitionOnly": false,
  "includeClosed": false,
  "payListedOnly": false,
  "skills": [],
  "languages": [],
  "videoStyles": [],
  "channelCategories": [],
  "includeDetails": false,
  "includeChannel": false,
  "includeChannelVideos": false,
  "maxChannelVideos": 5,
  "maxItems": 20,
  "monitorName": "",
  "monitorChangeTypes": [
    "NEW"
  ],
  "monitorBaselineFirstRun": false,
  "closedAfterMissedRuns": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/ytjobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/ytjobs-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/tUKAV2VCcYTnwfbtD/builds/hh9JwRtWsnttrawQV/openapi.json
