# Midjourney Gallery Scraper (`parseforge/midjourney-scraper`) Actor

Scrapes Midjourney gallery posts by search query or latest feed. Returns each post with its prompt, Chinese prompt, image URL, model, author, and timestamp as a flat row.

- **URL**: https://apify.com/parseforge/midjourney-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** AI, Videos, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.62 / 1,000 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Midjourney Gallery Scraper

**Scrape Midjourney images, prompts, and metadata from the public gallery.** Every record includes the prompt, Chinese translation, image URL, model version, author, and timestamp. No API key or browser automation. Export to CSV, JSON, Excel, or XML.

Midjourney has no official public API for its gallery, so collecting prompts and images at scale means manual browsing or brittle browser scripts. This actor reads the public gallery pages directly, searches by keyword, and returns each post with its prompt, image, model, and author in one flat row. It works for trend analysis, prompt engineering research, and dataset building without rate limits or login.

| Who uses it | What they scrape Midjourney Gallery for |
|---|---|
| Prompt engineers | Study which prompts produce the best images for a given style or subject. |
| AI researchers | Build datasets of text-to-image pairs for model training or analysis. |
| Content marketers | Find trending visual styles and the prompts behind them for campaign inspiration. |
| Tool builders | Feed a prompt search engine or gallery browser with fresh Midjourney data. |

### What it does

This Actor collects Midjourney gallery posts by search query or latest feed and returns each one as a flat row with the prompt, Chinese prompt, image URL, model, author, and timestamp.

- **Search by keyword:** filter the gallery by any phrase and get only matching posts.
- **Sort order:** retrieve the latest posts first or use the default relevance ranking.
- **Bulk export:** collect posts in one run and download as CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Midjourney Gallery data

**Analyze prompt trends.**

A prompt engineer scrapes the latest posts for a keyword like 'cyberpunk' to see which phrasing and model versions dominate the top results.

**Build a training dataset.**

An AI researcher collects prompt-image pairs from the gallery to fine-tune a text-to-image model on Midjourney's output style.

**Inspire a creative campaign.**

A marketing team scrapes posts tagged with a brand's visual theme to understand the current aesthetic and write prompts that match it.

**Power a prompt search tool.**

A developer runs the scraper daily to keep a third-party Midjourney prompt search engine populated with fresh gallery data.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key needed** | Reads the public gallery HTML directly, no registration or OAuth. |
| **Prompt and image together** | Each row pairs the full prompt with its image URL and metadata. |
| **Chinese prompt included** | Every post comes with its Chinese translation when available. |
| **Model and author tracking** | Know which Midjourney model version and user created each image. |

### How it compares

This actor scrapes the public Midjourney gallery for existing posts, while the competitors below either automate video generation or generate new images with a different model.

| Feature | ParseForge | Midjourney Video Automation | FLUX.2 Klein Image Generator |
|---|---|---|---|
| Scrapes public Midjourney gallery posts | Yes | Not listed | Not listed |
| Returns prompt text and Chinese translation | Yes | Not listed | Not listed |
| Returns image URL and thumbnail URL | Yes | Not listed | Not listed |
| Search gallery by keyword | Yes | Not listed | Not listed |
| No API key or login required | Yes | Not listed | Not listed |

### What a Midjourney Gallery record looks like

Every record returns as one flat JSON row. Here is a real one from a run:

```json
{
 "imageUrl": "https://reserve-mask-1256181000.cos.ap-shanghai.myqcloud.com/file_512/img/cdn/prompt-20260720/w1792_h2688_gNXNDQmtVWWhqR05YcFdZT3djVmU2Zz09-7c7c18c0c99c574e1c6e77c48893a50e.webp",
 "itemId": "10032",
 "prompt": "AI Bot a mysterious young woman standing in a rainy neon alley in Tokyo at midnight, cinematic composition, dramatic rim light, reflective wet pavement, translucent umbrella, haute couture fashion styling, emotional storytelling, layered depth, volumetric fog, rich color contrast, magenta and cyan glow, ultra detailed skin texture, wind-blown hair, analog film look, editorial photography, award-winning cinematography, surreal yet believable, highly aesthetic, Midjourney style --ar 2:3 --s 750 --c 18 --v 6.0",
 "chinesePrompt": "- MJ-V7",
 "thumbnailUrl": "https://reserve-mask-1256181000.cos.ap-shanghai.myqcloud.com/file_512/img/cdn/prompt-20260720/w1792_h2688_gNXNDQmtVWWhqR05YcFdZT3djVmU2Zz09-7c7c18c0c99c574e1c6e77c48893a50e.webp",
 "model": "MJ-V7",
 "author": "AI Bot",
 "timestamp": "2026-08-25 23:20",
 "link": "https://mj.bandeyu.com/prompt/show/10032",
 "altText": "生成成功，当图片超过30M时，不在此显示缩略图（请直接点击下方的【下载高清原图】即可）",
 "dataModel": "Midjourney",
 "scrapedAt": "2026-08-25T15:20:38.107Z"
}
```

Every value above comes from a real run. A field a record does not have comes back as `null`.

### Configure the run

Drive the Actor with a search query or leave it empty to browse all recent posts. Sorting and a max-items limit let you control the volume and freshness of the data. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "sortBy": "latest",
 "maxItems": 10
}
```

A larger pull:

```json
{
 "sortBy": "latest",
 "maxItems": 200
}
```

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect more results per run.

### Run it

1. [Create a free Apify account](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Midjourney Gallery Scraper](https://apify.com/parseforge/midjourney-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Midjourney Gallery through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/midjourney-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results for my search query?**

The gallery may not have any posts matching that exact phrase. Try a broader keyword or leave the search query empty to confirm the scraper is working with the latest feed.

**The run stopped before reaching my maxItems limit.**

The gallery only shows a finite number of pages. When the scraper reaches the last available page, it stops. Try a different search query or sort order to access more posts.

**Some image URLs are broken or missing.**

The gallery occasionally removes or moves images. The scraper returns whatever URLs are present on the page at the time of the run. Re-run later to get updated links.

**I only got 10 items even though I set a higher maxItems.**

Free Apify accounts are limited to 10 items per run for preview. Upgrade to a paid plan to unlock the full maxItems range.

### FAQ

| Question | Answer |
|---|---|
| Does this scraper need a Midjourney account or API key? | No. It reads the public gallery pages directly, so no login, API key, or browser automation is required. |
| Can I scrape images by a specific Midjourney model version? | The gallery does not offer a model-version filter, but every returned post includes the model field so you can filter after export. |
| What format are the image URLs in? | Each row contains the full-resolution image URL and a thumbnail URL. You can download the images separately using those links. |
| How many posts can I scrape in one run? | Free users are limited to 10 items for preview. Paid users can set a higher maxItems per run. |
| Does the scraper translate prompts into Chinese? | The gallery itself provides a Chinese translation for many posts. The scraper includes that field when it is present. |
| Can I scrape the gallery without a search query? | Yes. Leave the search query empty and set the sort order to latest to browse all recent posts. |
| Is the data returned in real time? | The scraper reads the live gallery pages, so you get the posts that are publicly visible at the moment the run executes. |
| Can I schedule this scraper to run daily? | Yes. You can set up an Apify schedule to run the actor automatically and collect new posts as they appear. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Midjourney, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

### 💰 How much does it cost to scrape Midjourney Gallery?

This Actor uses **pay-per-result** pricing: **$0.004 per result** collected. You are billed only for the results you receive, so a run that returns nothing costs nothing.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword or phrase to search for in the Midjourney gallery. Leave empty to browse all recent posts.

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

Order in which to retrieve posts. Choose latest for newest first or default for relevance.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "sortBy": "latest",
  "maxItems": 10
}
```

# Actor output Schema

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

Complete dataset of all scraped records.

# 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 = {
    "searchQuery": "",
    "sortBy": "latest",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/midjourney-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 = {
    "searchQuery": "",
    "sortBy": "latest",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/midjourney-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 '{
  "searchQuery": "",
  "sortBy": "latest",
  "maxItems": 10
}' |
apify call parseforge/midjourney-scraper --silent --output-dataset

```

## MCP server setup

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