# Novelpia User Posted Novel (`donald_trump/novelpia-user-posted-novel`) Actor

Extracts the full list of serialized novels written by any Novelpia
member. Give it one or more member numbers (mem\_no) and it returns every novel each author has posted — titles, genres, view and like counts, completion status, cover images, timestamps, and more — as structured JSON.

- **URL**: https://apify.com/donald\_trump/novelpia-user-posted-novel.md
- **Developed by:** [John Doe](https://apify.com/donald_trump) (community)
- **Categories:** Automation, Agents, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Novelpia Member Novel Scraper

**Novelpia Member Novel Scraper** extracts the **full list of serialized novels written by any [Novelpia](https://novelpia.com) member**. Give it one or more member numbers (`mem_no`) and it returns every novel each author has posted — titles, genres, view and like counts, completion status, cover images, timestamps, and more — as structured JSON. It talks directly to Novelpia's internal `get_member_writer_novel` API, so it is fast and does not need a browser.

Running on the Apify platform gives you scheduled runs, a REST API, ready-made integrations (Make, Zapier, Google Drive, and more), proxy rotation, and run monitoring on top of the scraper.

### Why use Novelpia Member Novel Scraper?

- **Author catalog tracking** — keep an up-to-date list of every novel an author publishes.
- **Market research** — compare view counts, likes, genres, and completion rates across writers.
- **Dataset building** — collect a structured corpus of Korean web-novel metadata for analysis or ML.
- **Monitoring** — schedule periodic runs to detect newly posted or updated novels.

### How to use Novelpia Member Novel Scraper

1. Open the Actor in Apify Console and go to the **Input** tab.
2. Add one or more **member numbers** (`mem_no`) to the *Member numbers* list. You can find a member's number in the author's Novelpia profile URL.
3. (Optional) Adjust **Rows per page** to control how many novels are fetched per API request.
4. Click **Start**. When the run finishes, open the **Output** (Dataset) tab to view, filter, and export the collected novels.

### Input

The Actor accepts a simple JSON input:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `mem_no_list` | array of strings | Yes | Novelpia member numbers whose serialized novels should be scraped. |
| `row_count` | integer | No | Novels requested per API page (1–500, default `100`). Higher values mean fewer requests. |

Example input:

```json
{
    "mem_no_list": ["2", "100"],
    "row_count": 100
}
````

### Output

Each scraped novel is stored as one item in the [dataset](https://docs.apify.com/platform/storage/dataset). You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

A simplified output item looks like this:

```json
{
    "scraped_mem_no": "2",
    "novel_no": 2532,
    "novel_name": "테스트 소설",
    "writer_nick": "개발자",
    "novel_genre": "[\"테스트\",\"숙주나물\"]",
    "count_view": 7863,
    "count_good": 200,
    "count_book": 3,
    "is_complete": 0,
    "novel_thumb": "/imagebox/cover/372925433920034a13c3925686e01aed_273808_ori.file",
    "last_write_date": "2021-07-31 02:04:29"
}
```

Each item contains the full set of fields returned by the Novelpia API (around 55 fields per novel) plus `scraped_mem_no`, which records the member number used to fetch it.

#### Data table

The most useful fields in each item:

| Field | Description |
|-------|-------------|
| `scraped_mem_no` | Member number that this novel was collected for (added by the Actor). |
| `novel_no` | Unique novel ID on Novelpia. |
| `novel_name` | Novel title. |
| `writer_nick` | Author's display nickname. |
| `novel_genre` | JSON-encoded list of genre tags. |
| `novel_story` | Short synopsis / description. |
| `count_view` | Total view count. |
| `count_good` | Total like count. |
| `count_book` | Number of times bookmarked. |
| `is_complete` | Whether the novel is completed (`1`) or ongoing (`0`). |
| `novel_thumb` / `novel_img` | Cover image paths (prefix with `https://novelpia.com`). |
| `start_date` | When the novel was first posted. |
| `last_write_date` | Timestamp of the most recent chapter. |

### How much does it cost to scrape Novelpia?

This Actor uses lightweight HTTP requests (no browser), so runs are cheap. Each member typically needs one API request per page of `row_count` novels, meaning most authors are scraped in a handful of requests. Cost scales with the number of members and the total novels they have published. Apify's free tier is usually enough to scrape many members; check the **Pricing** tab for current rates.

### Tips and advanced options

- **Fewer requests:** raise `row_count` (up to 500) so each request returns more novels and fewer pages are needed.
- **Batch authors:** pass many member numbers at once in `mem_no_list` to scrape a whole set of authors in a single run.
- **Scheduling:** use Apify's [scheduler](https://docs.apify.com/platform/schedules) to re-run periodically and track newly posted novels.

### FAQ, disclaimers, and support

**Is scraping Novelpia legal?** This Actor only reads publicly available author/novel listing data. You are responsible for complying with Novelpia's Terms of Service and applicable laws, and for using the collected data responsibly. Do not collect or redistribute personal or copyrighted content beyond what is permitted.

**Where do I find a member number?** It appears in an author's Novelpia profile URL.

**Known limitations:** The Actor depends on Novelpia's internal API; if Novelpia changes that endpoint or its response format, the output may change. It scrapes novel *listings* (metadata), not chapter text.

**Support:** Found a bug or need a custom solution? Open an issue from the Actor's **Issues** tab.

# Actor input Schema

## `mem_no_list` (type: `array`):

Explicit list of Novelpia member numbers to scrape. Use this for a handful of specific members. For large contiguous ranges, use Member number range instead.

## `mem_no_start` (type: `integer`):

Start of an inclusive member-number range to scrape. Combine with 'range: end'. Used only when 'Member numbers' list is empty.

## `mem_no_end` (type: `integer`):

End of an inclusive member-number range to scrape (inclusive). Combine with 'range: start'.

## `row_count` (type: `integer`):

Number of novels requested per API page. Higher values mean fewer requests.

## `concurrency` (type: `integer`):

How many members to scrape in parallel. Higher is faster (and cheaper in compute) but puts more load on Novelpia and risks rate-limiting (HTTP 403).

## `max_retries` (type: `integer`):

How many times to retry a request that is rate-limited (HTTP 403/429) or fails transiently, using exponential backoff.

## `request_delay` (type: `number`):

Optional pause after each API request to ease load on Novelpia. Increase if you hit rate-limiting.

## Actor input object example

```json
{
  "mem_no_list": [
    "2",
    "12345"
  ],
  "row_count": 100,
  "concurrency": 8,
  "max_retries": 5,
  "request_delay": 0
}
```

# Actor output Schema

## `results` (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 = {
    "mem_no_list": [
        "2"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("donald_trump/novelpia-user-posted-novel").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 = { "mem_no_list": ["2"] }

# Run the Actor and wait for it to finish
run = client.actor("donald_trump/novelpia-user-posted-novel").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mem_no_list": [
    "2"
  ]
}' |
apify call donald_trump/novelpia-user-posted-novel --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=donald_trump/novelpia-user-posted-novel",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Novelpia User Posted Novel",
        "description": "Extracts the full list of serialized novels written by any Novelpia\nmember. Give it one or more member numbers (mem_no) and it returns every novel each author has posted — titles, genres, view and like counts, completion status, cover images, timestamps, and more — as structured JSON.",
        "version": "0.5",
        "x-build-id": "1k3GZORLqgCVBL9Bf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/donald_trump~novelpia-user-posted-novel/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-donald_trump-novelpia-user-posted-novel",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/donald_trump~novelpia-user-posted-novel/runs": {
            "post": {
                "operationId": "runs-sync-donald_trump-novelpia-user-posted-novel",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/donald_trump~novelpia-user-posted-novel/run-sync": {
            "post": {
                "operationId": "run-sync-donald_trump-novelpia-user-posted-novel",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mem_no_list": {
                        "title": "Member numbers (mem_no)",
                        "type": "array",
                        "description": "Explicit list of Novelpia member numbers to scrape. Use this for a handful of specific members. For large contiguous ranges, use Member number range instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "mem_no_start": {
                        "title": "Member number range: start",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Start of an inclusive member-number range to scrape. Combine with 'range: end'. Used only when 'Member numbers' list is empty."
                    },
                    "mem_no_end": {
                        "title": "Member number range: end",
                        "minimum": 1,
                        "type": "integer",
                        "description": "End of an inclusive member-number range to scrape (inclusive). Combine with 'range: start'."
                    },
                    "row_count": {
                        "title": "Rows per page",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Number of novels requested per API page. Higher values mean fewer requests.",
                        "default": 100
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many members to scrape in parallel. Higher is faster (and cheaper in compute) but puts more load on Novelpia and risks rate-limiting (HTTP 403).",
                        "default": 8
                    },
                    "max_retries": {
                        "title": "Max retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many times to retry a request that is rate-limited (HTTP 403/429) or fails transiently, using exponential backoff.",
                        "default": 5
                    },
                    "request_delay": {
                        "title": "Request delay (seconds)",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Optional pause after each API request to ease load on Novelpia. Increase if you hit rate-limiting.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
