# Moj User Posts Scraper – Videos by User ID (`spider_studio/moj-user-posts-scraper`) Actor

Scrape public Moj user posts and profile videos by user ID. Discover feed pivots automatically, paginate results, and export video data through the Apify API.

- **URL**: https://apify.com/spider\_studio/moj-user-posts-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 user posts

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 User Posts Scraper do?

**Moj User Posts Scraper** is a **Moj profile video scraper and user posts API** for collecting public videos by user ID from [Moj](https://mojapp.in). Export captions, direct media URLs, thumbnails, creator details, likes, comments, views, and the original post data to JSON, CSV, or Excel.

Moj's feed requires a video pivot instead of a plain user ID, so the Actor discovers and validates that pivot automatically, paginates the profile feed, and removes overlapping posts. **No Moj login, cookies, browser, or external API key is required.** Requests use a sticky **Apify Residential Proxy** session.

### Why scrape Moj user posts?

- Build a public creator video catalog from stable user IDs.
- Monitor creator activity, publishing patterns, and engagement over time.
- Research influencers and public user-generated content (UGC).
- Analyze captions, engagement, thumbnails, and direct media URLs.
- Collect multiple creators in one run while isolating per-user failures.
- Schedule repeat collections and consume results through the Apify API.
- Preserve the complete Moj video object in `data` for advanced analysis.

### What Moj user-post data can be extracted?

| Field | Type | Description |
| --- | --- | --- |
| `user_id` | string | Requested Moj user ID |
| `page` | integer | Profile-feed page number |
| `video_id` | string | Moj video ID |
| `caption` | string | Public video caption |
| `video_page_url` | string | Public Moj video page |
| `video_url` | string | Direct video URL returned by Moj |
| `thumbnail_url` | string | Public thumbnail |
| `author_id` / `author_name` | string | Validated public creator identity |
| interaction counts | integer | Likes, comments, and views when available |
| `data` | object | Original Moj post object |

### Related Moj scraper Actors

| If you need | Use this Actor |
| --- | --- |
| Discover Moj users and user IDs by keyword | [Moj Search Scraper](https://apify.com/spider_studio/moj-search-scraper) |
| Resolve every available URL for a video | [Moj Video Details & URL Parser](https://apify.com/spider_studio/moj-video-details-url-parser) |
| Export comments from creator videos | [Moj Comments Scraper](https://apify.com/spider_studio/moj-video-comments-scraper) |
| Collect videos from a hashtag feed | [Moj Hashtag Scraper](https://apify.com/spider_studio/moj-hashtag-feed-scraper) |

### How to scrape Moj user posts and profile videos

1. Obtain public Moj user IDs from Moj Search or another public source.
2. Add the IDs to `user_ids` as strings.
3. Set the maximum number of feed pages for each user.
4. Start the run and inspect the default dataset.
5. Export results as JSON, CSV, Excel, or another supported format.

### Moj User Posts Scraper API input

```json
{
  "user_ids": ["58139789301"],
  "max_pages": 5
}
```

See the Input tab for full validation. The page limit applies separately to each user. Exact duplicate user IDs are removed. User ID `58139789301` returned public videos when live-verified on September 20, 2026; profile availability can change.

### Moj user video output: JSON, CSV, and Excel

Each unique video is one row. Moj normally overlaps the pivot post between adjacent pages; the Actor removes that overlap by video ID while retaining first-seen order.

```json
{
  "success": true,
  "user_id": "12345678901",
  "page": 1,
  "video_id": "1234567890",
  "caption": "Example user video caption",
  "video_page_url": "https://mojapp.in/video/1234567890",
  "video_url": "https://cdn.example.com/example-video.mp4",
  "author_name": "Example Creator",
  "error": null
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. JSON retains the full nested `data` field. If the Actor cannot find a public pivot post, it stores a failure row for that user and continues the batch.

### Moj user posts API for AI agents and automations

Call Actor ID `spider_studio/moj-user-posts-scraper` through the Apify API, JavaScript or Python client, schedules, webhooks, and integrations. Every post repeats the requested `user_id`, which makes multi-creator exports safe to group in a database, spreadsheet, or LLM pipeline.

Minimal request:

```json
{"user_ids":["58139789301"],"max_pages":1}
```

Use the Search Actor first when an agent has a creator name but not a user ID. Use the Video Details Actor afterward when it needs every current codec or bitrate URL.

### Live verification and reliability

Last live-verified on September 20, 2026: automatic handle lookup, pivot discovery, author validation, and two-page re-pivoting returned 16 unique public videos for the tested account. Creator libraries differ in size, and Moj can reorder a feed, so the Actor deduplicates by video ID instead of assuming stable page positions.

### How much does it cost to scrape Moj user posts?

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

| Apify user tier | Price per successful post | Price per 1,000 posts |
| --- | ---: | ---: |
| 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 user-request, pivot-discovery, or page-request fee. Only unique public videos successfully saved to the default Dataset trigger the `post-result` event; failed users, empty feeds, failure rows, retries, and overlapping posts are free. Post-run Dataset reads and long-term storage remain subject to Apify's standard platform pricing.

### Tips and limitations

- A public profile with no searchable public videos cannot be used to bootstrap the pivot feed.
- Feed ordering is controlled by Moj and may change between runs.
- The Actor verifies the returned author ID to prevent a wrong pivot from silently collecting another creator.
- Direct CDN URLs can expire; use the video-detail Actor when you need all current media variants.
- HTTP/1.1 is intentionally pinned because Moj blocks incompatible HTTP/2 fingerprints.

### Moj User Posts Scraper FAQ, disclaimer, and support

#### How do I find a Moj user ID?

Run [Moj Search Scraper](https://apify.com/spider_studio/moj-search-scraper) with `search_type` set to `user`. The returned `item_id` is the user ID accepted here.

#### Do I need a Moj login or profile URL?

No. Supply decimal user IDs only. The Actor manages the anonymous session and profile-feed pivot automatically.

#### Why does a user ID need pivot discovery?

Moj's current public profile-post operation is keyed by a post. The Actor hides this implementation detail and accepts only user IDs plus a page limit.

#### Can private users be collected?

No. Only public profiles and public videos returned by Moj are processed.

#### Can I export Moj profile videos to Excel?

Yes. Open the default dataset and export it to Excel, CSV, JSON, XML, or another supported format.

#### Is this an official Moj user API?

No. This is an independently developed public-data Actor and is not affiliated with or endorsed by Moj or ShareChat.

Our Actors are ethical and do not extract private user data such as email addresses, gender, or location. They only extract what users have chosen to share publicly. Results can contain personal data protected by GDPR and other regulations. Use it only with a legitimate basis and consult legal counsel when unsure.

Use the Actor's API tab for programmatic runs and the Issues tab for support. Include the user ID and sanitized run link.

# Actor input Schema

## `user_ids` (type: `array`):

Public Moj user IDs whose video posts should be collected.

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

Maximum post pages to fetch for each user ID.

## Actor input object example

```json
{
  "user_ids": [
    "58139789301"
  ],
  "max_pages": 1
}
```

# Actor output Schema

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

Video posts collected from the requested users.

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

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

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

```

## MCP server setup

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