# Moj Search Scraper – Videos, Users, Tags & Series (`spider_studio/moj-search-scraper`) Actor

Search Moj videos, users, hashtags, series, and mixed results by keyword. Export automatically paginated public data to JSON, CSV, or Excel via API.

- **URL**: https://apify.com/spider\_studio/moj-search-scraper.md
- **Developed by:** [Tarique](https://apify.com/spider_studio) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 moj search results

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

### What does Moj Search Scraper do?

**Moj Search Scraper** is a **Moj scraper and Moj search API** for finding public videos, users, hashtags, series, and mixed results by keyword on [Moj](https://mojapp.in). It exports one clean row per result to JSON, CSV, or Excel and supports five search modes: **Video**, **All**, **Series**, **Tag**, and **User**.

Run one keyword or a batch of up to 100. The Actor follows every native cursor automatically, removes duplicate results, and stops at your page limit. **No Moj login, cookies, browser, or external API key is required.** All Moj traffic uses a sticky **Apify Residential Proxy** session.

### Why use Moj Search Scraper?

- Discover videos and creators for content research.
- Monitor brands, topics, creators, and user-generated content (UGC).
- Find series and public tag IDs for downstream collection.
- Run a federated `all` search and keep the returned result type on every row.
- Process up to 100 keywords in one run with separate pagination per keyword.
- Schedule recurring searches, call the Actor through the Apify API, and connect datasets to other integrations.
- Preserve Moj's original object in `data` while receiving stable columns for spreadsheets.

### What Moj search data can be extracted?

| Field | Type | Description |
| --- | --- | --- |
| `search_type` | string | Requested vertical: `video`, `all`, `series`, `tag`, or `user` |
| `keyword` | string | Keyword that returned the item |
| `result_type` | string | Actual result type; useful for `all` searches |
| `item_id` | string | Moj video, series, tag, user, or livestream ID |
| `title` | string | Caption, series title, tag name, or user display name |
| `url` | string | Public item URL when Moj exposes one |
| `thumbnail_url` | string | Thumbnail or profile image |
| `data` | object | Original Moj response object |

### Related Moj scraper Actors

| If you need | Use this Actor |
| --- | --- |
| Full video metadata and direct media links | [Moj Video Details & URL Parser](https://apify.com/spider_studio/moj-video-details-url-parser) |
| Comments from one or more videos | [Moj Comments Scraper](https://apify.com/spider_studio/moj-video-comments-scraper) |
| Videos published by user IDs | [Moj User Posts Scraper](https://apify.com/spider_studio/moj-user-posts-scraper) |
| Videos from a Moj hashtag or tag ID | [Moj Hashtag Scraper](https://apify.com/spider_studio/moj-hashtag-feed-scraper) |

### How to search Moj videos, users, hashtags, and series

1. Choose one English search type from the dropdown.
2. Add one or more keywords.
3. Set the maximum number of pages for each keyword.
4. Click **Start** and open the default dataset when the run finishes.
5. Export the dataset as JSON, CSV, Excel, XML, or another Apify-supported format.

### Moj Search Scraper API input

See the Input tab for the full form. The Actor intentionally has only three inputs.

```json
{
  "search_type": "video",
  "keywords": ["dance"],
  "max_pages": 3
}
```

`max_pages` applies independently to every keyword. Video and series searches use numeric offsets, user search switches from the initial value to Moj's opaque continuation token, and `all` follows the five returned vertical cursors together. Repeated or unusable cursors stop safely instead of looping.

The `dance` prefill was live-verified on September 20, 2026. Search rankings and availability can change over time.

### Moj search API output: JSON, CSV, and Excel

Each result is a separate row. Duplicate IDs are removed within the same keyword and result type. `all` searches can return video, tag, user, series, and livestream rows. If one keyword fails, the Actor stores a sanitized failure row and continues with the other keywords.

```json
{
  "success": true,
  "search_type": "video",
  "keyword": "dance",
  "result_type": "video",
  "page": 1,
  "item_id": "1234567890",
  "title": "Example Moj result",
  "url": "https://mojapp.in/video/1234567890",
  "data": {"i": "1234567890"},
  "error": null
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. JSON is recommended when you need the complete nested `data` object.

### Moj Search API for AI agents and automations

Use Actor ID `spider_studio/moj-search-scraper` from the Apify API, JavaScript or Python client, schedules, webhooks, and integrations. The normalized columns are compact enough for spreadsheets and LLM pipelines, while `data` preserves the complete source object for applications that need Moj-specific fields.

Minimal request:

```json
{"search_type":"video","keywords":["dance"],"max_pages":1}
```

For AI agents, state the desired search type, keyword list, and page limit. The result rows always identify the original `keyword` and actual `result_type`, so mixed `all` searches can be routed without guessing.

### Live verification and reliability

Last live-verified on September 20, 2026: all five search modes returned valid structured responses through Apify Residential Proxy. Cursor advancement was also verified across two pages for video, mixed, tag, and user searches; the tested series query stopped correctly after its first and only available page. Result counts depend on the keyword and Moj's current index, so these checks demonstrate behavior rather than promise a fixed volume.

### How much does a Moj search scraper cost?

This Actor uses pay-per-event pricing with platform usage included:

| Apify user tier | Price per successful result | Price per 1,000 results |
| --- | ---: | ---: |
| Free | $0.0025 | $2.50 |
| Bronze, Silver, Gold, Platinum, Diamond | $0.0015 | $1.50 |

The automatic Actor-start event costs $0.00005 per run. There is no keyword-request or page-request fee. Only unique search rows successfully saved to the default Dataset trigger the `search-result` event; empty searches, failure rows, retries, and duplicates are free. Post-run Dataset reads and long-term storage remain subject to Apify's standard platform pricing.

### Tips and limitations

- Search results change over time and can vary with Moj's ranking system.
- An empty page ends pagination early even when a larger page limit was requested.
- Moj's API requires HTTP/1.1; the Actor deliberately does not enable HTTP/2.
- Every run creates one anonymous Moj guest session and reuses it with one sticky residential proxy identity.

### Moj Search Scraper FAQ, disclaimer, and support

#### Is this an official Moj API?

No. This is an independently developed Moj scraper and automation API for public data. It is not affiliated with or endorsed by Moj or ShareChat.

#### Can I search Moj without logging in?

Yes. Users do not provide a Moj account, password, cookie, or API key. The Actor establishes the anonymous session required by Moj automatically.

#### Does the Actor scrape private profiles?

No. It only collects results Moj returns through public business endpoints.

#### Can I use the results programmatically?

Yes. Use the Actor's API tab, Apify clients, schedules, webhooks, or integrations to start runs and read the default dataset.

#### Can I export Moj search results to CSV or Excel?

Yes. Open the run's dataset and choose CSV, Excel, JSON, XML, or another available export format.

Our Actors are ethical and do not extract private user data such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. Results can still contain personal data protected by GDPR and other regulations. Do not scrape personal data without a legitimate reason; consult your lawyers if you are unsure.

Report reproducible issues through the Actor's Issues tab and include the search type, keyword, and sanitized run link.

# Actor input Schema

## `search_type` (type: `string`):

Choose the Moj search vertical.

## `keywords` (type: `array`):

One or more search terms. Duplicate terms are removed.

## `max_pages` (type: `integer`):

Maximum number of pages to fetch separately for each keyword.

## Actor input object example

```json
{
  "search_type": "video",
  "keywords": [
    "dance"
  ],
  "max_pages": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

Search items returned for all requested keywords.

# 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 = {
    "keywords": [
        "dance"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider_studio/moj-search-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 = { "keywords": ["dance"] }

# Run the Actor and wait for it to finish
run = client.actor("spider_studio/moj-search-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 '{
  "keywords": [
    "dance"
  ]
}' |
apify call spider_studio/moj-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spider_studio/moj-search-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/AceRKRA0QkyQHxq5i/builds/DDbSDsBtABI9AgYxy/openapi.json
