# Moj Short Video Scraper: Hashtag Videos, Views & Growth Monitor (`getascraper/moj-short-video-scraper`) Actor

Scrape Moj short videos from public hashtag pages and video links, no login. Get views, likes, shares, sound and creator followers per video. Filter by views, language, date and length, follow related hashtags, and monitor growth between runs. Export to Sheets, Slack, Zapier or Make.

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

## Pricing

from $1.70 / 1,000 video records

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

## 🎬 Moj Short Video Scraper: Hashtag Videos, Views & Growth Monitor

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FDEBF3;border:1px solid #F5C2DA;border-top:4px solid #D6246E;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">See what is taking off on Moj, and watch your own videos grow.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Collect Moj short videos from hashtag pages and video links with views, likes, shares, sound and creator profile. Filter by size, language and date, then schedule the same search to catch new videos and growth.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F5C2DA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3124F">🎯 Filters that cut noise</span><br>
<span style="font-size:12px;color:#57534E">Views, likes, shares, language, length, posting date, hashtags, caption words and creator size.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F5C2DA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3124F">👤 Creator profile on every row</span><br>
<span style="font-size:12px;color:#57534E">Handle, bio, followers, following, total likes and badges next to each video.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F5C2DA;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3124F">🔗 Find related videos</span><br>
<span style="font-size:12px;color:#57534E">Follow the hashtags used in the videos you found to reach more videos on the same topic.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #F5C2DA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#A3124F">📈 Growth monitor</span><br>
<span style="font-size:12px;color:#57534E">Name a search and get NEW, UPDATED, UNCHANGED and REMOVED videos with views and likes growth.</span>
</td>
</tr>
</table>

Scrape Moj (the Indian short video app from ShareChat) without an account. Give the Actor Moj hashtag pages, video links, or both, and every video comes back as one clean row with the numbers Moj shows, the sound used, the hashtags in the caption and a summary of the creator.

This Actor is not affiliated with or endorsed by Moj or ShareChat. It reads only pages that anyone can open without signing in.

### 🔍 What does this Actor do?

Moj has a hashtag page for every topic, and each page lists the latest videos with their numbers. This Actor reads those pages and your own video links, keeps the videos that pass your filters and saves them in a table you can export.

- Reads hashtag pages from links like `https://mojapp.in/tag/5783707` and returns the videos Moj lists there, up to about 15 per page.
- Reads video links such as `https://mojapp.in/video/3955156255` for the full details of videos you already know.
- Can follow related hashtags from the captions it finds, up to three levels deep, to grow a small list into a topic map.
- Filters by views, likes, comments, shares, calculated engagement rate, posting date, language, length, hashtags, caption words, creator handle and creator follower count.
- Sorts by views, likes, shares, engagement rate or date before the result cap is applied.
- Tracks a saved search between runs. Each video is labeled NEW, UPDATED, UNCHANGED or REMOVED, with views, likes and shares growth since your previous run.

### 🎯 What can I use it for?

- **Social media and brand teams:** list the newest videos under a campaign hashtag and see which ones are getting views.
- **Influencer and talent scouts:** find creators with a small following whose videos are already outperforming it.
- **Agencies running campaigns on Moj:** put your client's video links on a schedule and report views and likes growth every day.
- **Trend and market researchers:** read the language, sound and hashtag mix around a topic and export it.
- **Music and entertainment teams:** see which sounds are used in the videos of a hashtag.

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FDEBF3;border:1px solid #F5C2DA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D6246E;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Add hashtags or videos</span><br>
<span style="font-size:12px;color:#57534E">Paste Moj hashtag page links and video links, one per row.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEBF3;border:1px solid #F5C2DA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D6246E;letter-spacing:1px">STEP 2</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 minimum views, a language, a date window, then run the default 20 videos first.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FDEBF3;border:1px solid #F5C2DA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D6246E;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or monitor</span><br>
<span style="font-size:12px;color:#57534E">Download CSV, Excel or JSON, or add a monitor name and schedule the run.</span>
</td>
</tr>
</table>

To get a hashtag link, open the hashtag in Moj or on mojapp.in and copy the address. The number at the end of `https://mojapp.in/tag/5783707` identifies the hashtag.

### 📥 Input

All fields are optional. The defaults read two popular hashtags and return 20 videos.

| Field | Type | Required | Description |
|---|---|---|---|
| Hashtag pages | array of text | No | Moj hashtag page links or the hashtag number, one per row. Hashtag names cannot be looked up, so copy the link from Moj. |
| Video links | array of text | No | Moj video links or video numbers, one per row. Use this to track specific videos. |
| Follow related hashtags | boolean | No | Also read the hashtags used in the captions of videos already found, most used first. Off by default. |
| Hashtag levels | integer | No | How many rounds of related hashtags to follow, from 1 to 3. |
| Hashtags per level | integer | No | Maximum related hashtag pages to read in each round, up to 50. |
| Related hashtag keywords | array of text | No | Only follow related hashtags whose name contains one of these words. |
| Minimum views | integer | No | Keep videos with at least this many views. |
| Maximum views | integer | No | Keep videos with at most this many views. |
| Minimum likes | integer | No | Keep videos with at least this many likes. |
| Minimum comments | integer | No | Keep videos with at least this many comments. Videos without a shown comment count are skipped when this is set. |
| Minimum shares | integer | No | Keep videos with at least this many shares. Videos without a shown share count are skipped when this is set. |
| Minimum engagement rate | number | No | Keep videos whose likes, comments and shares divided by views reach this percentage. |
| Posted within days | integer | No | Keep videos posted in the last N days. |
| Posted after | date | No | Keep videos posted on or after this date. |
| Posted before | date | No | Keep videos posted on or before this date. |
| Languages | array of text | No | Keep videos in these languages, for example Hindi, Tamil or English. |
| Minimum length | integer | No | Keep videos at least this many seconds long. |
| Maximum length | integer | No | Keep videos at most this many seconds long. |
| Must use any of these hashtags | array of text | No | Keep videos whose caption uses at least one of these hashtags. |
| Skip these hashtags | array of text | No | Drop videos whose caption uses any of these hashtags. |
| Caption must contain any word | array of text | No | Keep videos whose caption contains at least one of these words. |
| Caption must not contain | array of text | No | Drop videos whose caption contains any of these words. |
| Skip adult-flagged videos | boolean | No | Drop videos that Moj flags as adult content. On by default. |
| Only these creators | array of text | No | Keep only videos by these creator handles or profile links. |
| Minimum creator followers | integer | No | Keep videos from creators with at least this many followers. |
| Maximum creator followers | integer | No | Keep videos from creators with at most this many followers. |
| Maximum videos | integer | No | Stop after this many videos. Default 20, up to 1,000. |
| Sort results by | enum | No | Order found, most views, most likes, most shares, highest engagement rate, newest or oldest. |
| Monitor name | text | No | A stable name that turns on change tracking between runs. |
| Only output changes | boolean | No | With a monitor name, save only new, updated and removed videos. |
| Proxy configuration | object | No | Leave empty. The Actor handles its own connection. |

### 📊 Data table

Fields a video does not show are left out of the row. Nothing is filled with placeholders. Counts are the numbers Moj shows at the time of the run.

| Field | Type | Description |
|---|---|---|
| `videoId` | text | Moj video number. |
| `url` | text | Link to the video page on mojapp.in. |
| `caption` | text | Caption as posted, including its hashtags. |
| `hashtags` | array | Hashtags in the caption with `id`, `name` and `url`. |
| `language` | text | Language Moj assigns to the video. |
| `postedAt` | text | Posting time in ISO 8601, UTC. |
| `durationSeconds` | number | Video length in seconds. |
| `width`, `height` | number | Video size in pixels. |
| `views` | number | Views shown by Moj. |
| `likes` | number | Likes shown by Moj. |
| `comments` | number | Comments, only when Moj shows a count. |
| `shares` | number | Shares, only when Moj shows a count. |
| `engagementRateComputedPercent` | number | Likes plus comments plus shares divided by views, times 100. Calculated by the Actor from the numbers above. |
| `musicName`, `musicCredit` | text | Sound name and credit line. |
| `musicId`, `musicDurationSeconds`, `musicUrl` | mixed | Sound number, length and audio file link. |
| `thumbnailUrl` | text | Thumbnail image link. |
| `videoUrl` | text | Video file link. Moj file links can expire, so download soon after the run. |
| `attributedVideoUrl` | text | Video file link that carries the creator tag. |
| `hevcVideoUrls` | array | Smaller video file links, when Moj lists them. |
| `categories` | array | Category and sub-category Moj assigns, when listed. |
| `isAdult` | boolean | True when Moj flags the video as adult. |
| `commentsDisabled` | boolean | True when the creator turned comments off. |
| `duetOfVideoId` | text | Number of the original video when this one is a duet. |
| `pinnedOnHashtagPage` | boolean | True when Moj pins the video on the hashtag page. |
| `creatorUserId`, `creatorHandle`, `creatorName` | text | Who posted the video. |
| `creatorUrl`, `creatorAvatarUrl` | text | Profile link and profile picture link. |
| `creatorBio` | text | Profile bio exactly as the creator wrote it. |
| `creatorFollowers`, `creatorFollowing`, `creatorTotalLikes`, `creatorVideoCount` | number | Profile counts shown by Moj. |
| `creatorBadges` | array | Badge names shown on the profile. |
| `foundVia` | text | `video-link`, `hashtag` or `related-hashtag`. |
| `sourceHashtagId`, `sourceHashtagName` | text | Hashtag page the video came from. |
| `sourceHashtagTotalPlays` | text | Total plays label of that hashtag, such as `57B`. |
| `discoveryDepth` | number | Level of related hashtags the video was found on. |
| `monitorStatus` | text | `NEW`, `UPDATED`, `UNCHANGED` or `REMOVED`. Only with a monitor name. |
| `changedFields` | array | What changed since the previous run: views, likes, comments, shares or caption. |
| `firstSeenAt`, `previousSeenAt`, `hoursSincePreviousSeen` | mixed | When your monitor first and last saw the video. |
| `previousViews`, `viewsDelta`, `viewsGrowthPercent` | number | Views at your previous run and the change since. |
| `previousLikes`, `likesDelta` | number | Likes at your previous run and the change since. |
| `previousComments`, `commentsDelta`, `previousShares`, `sharesDelta` | number | Comment and share change since your previous run, when both counts were shown. |
| `removedDetectedAt` | text | When a linked video was confirmed removed. |
| `scrapedAt` | text | Time of the run, ISO 8601. |

Growth numbers come only from your own earlier runs under the same monitor name. The first run has none.

Example row, shortened:

```json
{
  "videoId": "3955156255",
  "url": "https://mojapp.in/video/3955156255",
  "language": "Tamil",
  "postedAt": "2026-10-03T05:36:20.000Z",
  "durationSeconds": 32,
  "views": 795,
  "likes": 41,
  "shares": 2,
  "engagementRateComputedPercent": 5.41,
  "musicName": "Original Sound",
  "creatorHandle": "wfh39",
  "creatorFollowers": 610,
  "foundVia": "video-link"
}
```

### 💰 Pricing

You pay per video saved. A run that finds no videos costs nothing, and there are no subscriptions. The default run of 20 videos is a small, quick test. Free plan runs are limited to 25 videos per run, 3 runs per day, and a short wait between runs.

### ⭐ Enjoying Moj Short Video Scraper: Hashtag Videos, Views & Growth Monitor?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FDEBF3;border:1px solid #F5C2DA;border-left:5px solid #D6246E;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">Copying view counts from Moj by hand is worth a quick rating.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other social media teams and campaign analysts find this Actor. Your feedback also tells us which filters to add next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#D6246E;border:1px solid #F5C2DA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/moj-short-video-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>

### ❓ FAQ

#### How do I scrape Moj videos for a hashtag?

Open the hashtag on Moj or mojapp.in, copy the address (it ends in a number, for example `https://mojapp.in/tag/5783707`) and paste it into "Hashtag pages". Each hashtag page lists up to about 15 videos. Add more hashtags, or switch on "Follow related hashtags", to collect more.

#### Does it need a Moj login?

No. The Actor reads only public pages. It never asks for a login, password, cookie or API key.

#### Can I search Moj by keyword or list all videos of a creator?

No. This Actor works from hashtag pages and video links. To find one creator inside a hashtag, use "Only these creators". Comments are not collected.

#### How do I track how fast a Moj video is growing?

Paste the video links into "Video links", type a monitor name such as `launch-campaign` and put the run on an Apify schedule. The first run saves the starting numbers. Later runs add `viewsDelta`, `likesDelta` and `viewsGrowthPercent` against your previous run. A video that Moj removes is reported once as REMOVED with its last known numbers.

#### How is the engagement rate calculated?

It is likes plus comments plus shares, divided by views, times 100, using only the counts Moj shows. If Moj shows no likes, comments or shares for a video, no rate is given.

#### Why does the same hashtag return different videos on different days?

Moj updates hashtag pages as people post, so the list changes through the day. Schedule the run with a monitor name to follow it.

#### Is the data personal data?

Rows contain what creators chose to show publicly on Moj, such as handle, name and bio. Use it in line with Moj's terms and the privacy rules that apply to you.

#### Can I send results to Slack, email or a spreadsheet?

Yes. Apify integrations and webhooks can forward each finished run to Slack, email, Google Sheets, Zapier, Make or your own endpoint.

### 🔗 Other actors

- [Xigua Video Scraper 西瓜视频: Keyword & Hashtag Search, Play Stats](https://apify.com/getascraper/xigua-video-search-scraper) ↗ - Chinese short video search with play stats.
- [Bilibili Trending Videos Scraper 哔哩哔哩: Rankings & Hot Searches](https://apify.com/getascraper/bilibili-popular-video-intelligence) ↗ - Bilibili rankings and hot searches.
- [Kick Video Downloader: Archive Clips & VODs as MP4 + Watchlist](https://apify.com/getascraper/kick-video-downloader) ↗ - Kick clips and streams as MP4 files.
- [Loom Video Downloader: MP4 URL, Transcript, Captions & Metadata](https://apify.com/getascraper/loom-video-downloader) ↗ - Loom video links with transcripts.
- [Streamable Video Downloader: MP4 Links & Metadata](https://apify.com/getascraper/streamable-video-downloader) ↗ - Streamable MP4 links and details.

# Changelog

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

# Actor input Schema

## `hashtags` (type: `array`):

Moj hashtag pages to read, one per row: a link like https://mojapp.in/tag/5783707 or the number from it. Each page returns the posts Moj lists for that hashtag, with full video and creator details. Hashtag names cannot be looked up, so copy the link from the Moj app or web page.

## `videoUrls` (type: `array`):

Moj video links to read, one per row, such as https://mojapp.in/video/3955156255 or https://mojapp.in/@handle/video/3955156255. A bare video number also works. Use this to track specific videos over time.

## `expandHashtags` (type: `boolean`):

Also read the hashtag pages that appear in the captions of the videos found so far, most used first. This finds more videos around your topic. Off by default.

## `expansionDepth` (type: `integer`):

How many rounds of related hashtags to follow. 1 reads hashtags used by your starting videos, 2 also reads hashtags used by those results.

## `maxHashtagsToExpand` (type: `integer`):

Maximum number of related hashtag pages to read in each round. Each page lists up to about 15 videos.

## `expansionKeywords` (type: `array`):

Only follow related hashtags whose name contains one of these words, for example cricket or recipe. Leave empty to follow the most used hashtags.

## `minViews` (type: `integer`):

Keep videos with at least this many views.

## `maxViews` (type: `integer`):

Keep videos with at most this many views. Useful for finding rising videos from smaller creators.

## `minLikes` (type: `integer`):

Keep videos with at least this many likes.

## `minComments` (type: `integer`):

Keep videos with at least this many comments. Moj shows a comment count only on some videos, and videos without one are skipped when this is set.

## `minShares` (type: `integer`):

Keep videos with at least this many shares. Videos where Moj shows no share count are skipped when this is set.

## `minEngagementRatePercent` (type: `number`):

Keep videos whose (likes + comments + shares) divided by views is at least this percentage. The rate is calculated from the numbers Moj shows.

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

Keep videos posted in the last N days. 1 means the last 24 hours.

## `postedAfter` (type: `string`):

Keep videos posted on or after this date.

## `postedBefore` (type: `string`):

Keep videos posted on or before this date.

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

Keep videos in these languages, for example Hindi, Tamil, Telugu, Kannada, Bengali, Marathi, Gujarati, Punjabi, Malayalam, Bhojpuri or English. The language is the one Moj assigns to the video.

## `minDurationSeconds` (type: `integer`):

Keep videos at least this long.

## `maxDurationSeconds` (type: `integer`):

Keep videos at most this long.

## `includeHashtags` (type: `array`):

Keep videos whose caption uses at least one of these hashtags, written with or without the # sign.

## `excludeHashtags` (type: `array`):

Drop videos whose caption uses any of these hashtags.

## `captionKeywords` (type: `array`):

Keep videos whose caption contains at least one of these words or phrases. Not case sensitive.

## `excludeCaptionKeywords` (type: `array`):

Drop videos whose caption contains any of these words or phrases. Not case sensitive.

## `excludeAdult` (type: `boolean`):

Drop videos that Moj itself flags as adult content.

## `creatorHandles` (type: `array`):

Keep only videos by these creators, written as handles or profile links such as @starsportsindia\_\_\_\_. Handy for finding one creator or brand inside hashtag pages.

## `minCreatorFollowers` (type: `integer`):

Keep videos from creators with at least this many followers.

## `maxCreatorFollowers` (type: `integer`):

Keep videos from creators with at most this many followers. Good for spotting small creators whose videos are taking off.

## `maxResults` (type: `integer`):

Maximum number of videos to save after filtering. Hashtag pages list up to about 15 videos each, so large runs need more hashtags or Follow related hashtags.

## `sortBy` (type: `string`):

Order of the saved videos. The cap above is applied after sorting.

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

Give this search a name to track it over time. Each run is compared with the previous run under the same name: videos are marked new, updated or unchanged with views, likes and shares growth, and a linked video that Moj removed is reported once. Use a fixed name and schedule the Actor. Leave empty for a one-off run.

## `onlyChanges` (type: `boolean`):

When a monitor name is set, save only new, updated and removed videos and skip unchanged ones.

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

Optional. By default the Actor connects directly and moves to Apify proxies by itself if a request is refused. Set a proxy only to force a specific route.

## Actor input object example

```json
{
  "hashtags": [
    "5783707",
    "3136"
  ],
  "videoUrls": [],
  "expandHashtags": false,
  "expansionDepth": 1,
  "maxHashtagsToExpand": 5,
  "expansionKeywords": [],
  "languages": [],
  "includeHashtags": [],
  "excludeHashtags": [],
  "captionKeywords": [],
  "excludeCaptionKeywords": [],
  "excludeAdult": true,
  "creatorHandles": [],
  "maxResults": 20,
  "sortBy": "discovery",
  "onlyChanges": false
}
```

# Actor output Schema

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

No description

## `hashtags` (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 = {
    "hashtags": [
        "5783707",
        "3136"
    ],
    "videoUrls": [],
    "expandHashtags": false,
    "expansionDepth": 1,
    "maxHashtagsToExpand": 5,
    "expansionKeywords": [],
    "languages": [],
    "includeHashtags": [],
    "excludeHashtags": [],
    "captionKeywords": [],
    "excludeCaptionKeywords": [],
    "excludeAdult": true,
    "creatorHandles": [],
    "maxResults": 20,
    "sortBy": "discovery",
    "onlyChanges": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/moj-short-video-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 = {
    "hashtags": [
        "5783707",
        "3136",
    ],
    "videoUrls": [],
    "expandHashtags": False,
    "expansionDepth": 1,
    "maxHashtagsToExpand": 5,
    "expansionKeywords": [],
    "languages": [],
    "includeHashtags": [],
    "excludeHashtags": [],
    "captionKeywords": [],
    "excludeCaptionKeywords": [],
    "excludeAdult": True,
    "creatorHandles": [],
    "maxResults": 20,
    "sortBy": "discovery",
    "onlyChanges": False,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/moj-short-video-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 '{
  "hashtags": [
    "5783707",
    "3136"
  ],
  "videoUrls": [],
  "expandHashtags": false,
  "expansionDepth": 1,
  "maxHashtagsToExpand": 5,
  "expansionKeywords": [],
  "languages": [],
  "includeHashtags": [],
  "excludeHashtags": [],
  "captionKeywords": [],
  "excludeCaptionKeywords": [],
  "excludeAdult": true,
  "creatorHandles": [],
  "maxResults": 20,
  "sortBy": "discovery",
  "onlyChanges": false
}' |
apify call getascraper/moj-short-video-scraper --silent --output-dataset

```

## MCP server setup

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