# Patreon Scraper (`solidcode/patreon-scraper`) Actor

\[💰 $2.5/1K creators + $0.4/1K posts] Extract Patreon creators and their public posts — patron/member counts, membership tiers, pricing, NSFW flags, plus post titles, likes, comments, and teasers. Paste URLs, search by keyword, or browse a category. For creator research and brand-deal scouting.

- **URL**: https://apify.com/solidcode/patreon-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Social media, Lead generation, Other
- **Stats:** 7 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 creators

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/platform/actors/running/actors-in-store#pay-per-event

## 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Patreon Scraper

Pull Patreon creators and their public posts at scale — every membership tier with its monthly price, post engagement, full post archives, and patron counts where Patreon still publishes them, all as clean structured rows. Start from a creator link, a keyword, or one of 10 browseable categories. Built for creator-economy researchers, brand and sponsorship scouts, and agencies analyzing membership businesses who need hard numbers on who is monetizing what — without copying figures off pages by hand.

### Why This Scraper?

- **Two linked record types in one run** — a `creator` row for every campaign and a `post` row for every public post, joined by creator id and handle so you can pivot from a creator straight to their content.
- **Every membership tier with its monthly price** — the full tier ladder (title, monthly amount in cents and dollars, currency, per-tier patron count, benefits text, shipping flag) for each creator, often 6 or more tiers, so you can read their exact pricing strategy.
- **Like and comment counts on every post** — real engagement metrics per post, plus post type (image, video, audio, text, poll, or link), publish date, public/paid flags, and thumbnail.
- **10 browseable categories** — Podcasts & Shows, Music, Visual Arts, Video Games, Tabletop Games, Writing, Handicrafts & DIY, Apps & Software, Social Impact, and Lifestyle, ranked by popularity.
- **Three ways to start** — paste creator or individual post links, search creators by keyword, or browse a category. Mix all three in a single run; no rigid "mode" to pick first.
- **Patron and paid-member counts where Patreon still publishes them** — for creators reached by a direct creator-page link these come through; for many creators surfaced via search or category browsing Patreon no longer exposes the counts publicly, so those rows carry them as empty (every other field still lands).
- **Deep post archives, newest first** — pull a creator's full public history, hundreds to thousands of posts, or cap it per creator to keep runs lean.
- **Creator-only fast mode** — flip posts off to map an entire category of creators and their tiers in one cheap pass before deciding which ones deserve a deep post dive.
- **Adult-content toggle** — NSFW creators are excluded by default and opt-in when you need them, so category results stay clean.

### Use Cases

**Creator-Economy Research**
- Map tier pricing strategies across a whole category — entry price, top tier, number of tiers
- Compare patron and paid-member counts where Patreon publishes them (typically creators reached by direct link)
- Track how a creator's post cadence and content mix grow over time
- Size a niche by browsing its category and tallying tiers, post volume, and engagement

**Brand & Sponsorship Scouting**
- Find creators in a topic and judge fit from their tiers, post types, and engagement
- Rank prospects by paid-member count where it is published — paste creator links to pull those counts
- Read post titles, types, and any available teaser to judge content fit before outreach
- Shortlist by engagement — likes and comments per post — not size alone

**Competitive & Membership Analysis**
- Reverse-engineer a competitor's tier ladder and monthly price points
- Compare free-vs-paid membership mix across rival creators
- Spot which post types (video, audio, podcast) drive the most engagement
- Watch a competitor's post archive for cadence and format shifts

**Lead Generation & Outreach**
- Build creator lists by category or keyword with handle, page URL, and tiers
- Filter to creators who already run paid memberships
- Enrich a prospect list with tier pricing, post volume, and engagement signals

**Trend & Content Intelligence**
- Surface the most-engaged public posts in a category
- Track emerging creators in Apps & Software or Social Impact
- Feed creator and post data into dashboards and market reports

### Getting Started

#### Single Creator

The simplest run — one creator and its 20 most recent public posts:

```json
{
    "startUrls": ["https://www.patreon.com/PhilosophyTube"]
}
````

#### Browse a Category

Pull the top creators in a category, with a few posts each, skipping adult content:

```json
{
    "category": "music",
    "maxResults": 50,
    "maxPostsPerCreator": 5,
    "includeNsfw": false
}
```

#### Search, Creators Only (Fast Map)

Find creators by keyword and grab just their profiles and tiers — no posts — for a quick, cheap category map:

```json
{
    "searchQuery": "true crime podcast",
    "includePosts": false,
    "maxResults": 100
}
```

#### Deep Archive of Specific Creators

Mix several handles and one post link, and pull every public post each creator has:

```json
{
    "startUrls": [
        "https://www.patreon.com/PhilosophyTube",
        "leftofphilosophy",
        "https://www.patreon.com/posts/title-159731976"
    ],
    "includePosts": true,
    "maxPostsPerCreator": 0,
    "maxResults": 10
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `["https://www.patreon.com/PhilosophyTube"]` | One or more Patreon links or handles. A creator page or bare handle returns that creator plus its public posts; an individual post link returns just that post. Mix both in one list. |
| `searchQuery` | string | `""` | Find creators by topic, e.g. `"true crime podcast"` or `"watercolor art"`. Leave blank when using links or a category. |
| `category` | string | `""` | Browse top creators in a category. One of: Podcasts & Shows, Music, Visual Arts, Video Games, Tabletop Games, Writing, Handicrafts & DIY, Apps & Software, Social Impact, Lifestyle. |

#### Posts

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includePosts` | boolean | `true` | Also collect each creator's public posts. Turn off for faster, cheaper creator-only runs. |
| `maxPostsPerCreator` | integer | `20` | Maximum public posts per creator, newest first. Set to `0` to pull a creator's full archive (up to a safety maximum). Each post is its own row. |
| `includeNsfw` | boolean | `false` | Include creators marked adult/NSFW in category results (and in search where Patreon exposes them). Off by default. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum creators to collect across all links, searches, and categories. Set to `0` for no limit. Posts are limited separately by Max Posts Per Creator. |

### Output

Every row carries a `recordType` field — `creator` or `post`. Each post links back to its creator via `creatorId` and `creatorVanity`, so you can join the two streams downstream.

#### Creator (`recordType: "creator"`)

```json
{
    "recordType": "creator",
    "id": "133349",
    "vanity": "PhilosophyTube",
    "url": "https://www.patreon.com/PhilosophyTube",
    "name": "Philosophy Tube",
    "summary": "I make videos about philosophy and related topics.",
    "oneLiner": "Video essays on philosophy",
    "creationName": "videos",
    "currency": "USD",
    "patronCount": 4821,
    "paidMemberCount": 4612,
    "creationCount": 318,
    "payPerName": "month",
    "isMonthly": true,
    "isNsfw": false,
    "offersFreeMembership": true,
    "offersPaidMembership": true,
    "publishedAt": "2015-04-01T12:00:00.000+00:00",
    "avatarPhotoUrl": "https://c10.patreonusercontent.com/avatar.jpg",
    "coverPhotoUrl": "https://c10.patreonusercontent.com/cover.jpg",
    "pledgeUrl": "/join/PhilosophyTube",
    "creatorFullName": "Abigail Thorn",
    "tiers": [
        {
            "id": "459382",
            "title": "Supporter",
            "amountCents": 300,
            "amountUsd": "3.00",
            "currency": "USD",
            "patronCount": 1840,
            "requiresShipping": false,
            "imageUrl": null
        }
    ]
}
```

##### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"creator"` |
| `id` | string | Creator (campaign) id — join key for posts |
| `vanity` | string | Handle / slug used in the page URL |
| `url` | string | Public creator page URL |
| `name` | string | Creator or campaign display name |
| `creatorFullName` | string | Full name of the person who owns the page |
| `summary` | string | About / description text |
| `oneLiner` | string | Short tagline |
| `creationName` | string | What the creator makes (e.g. "videos", "a podcast") |
| `publishedAt` | string | Date the creator page launched (ISO 8601) |

##### Membership & Audience

| Field | Type | Description |
|-------|------|-------------|
| `patronCount` | number | Total patrons following the creator |
| `paidMemberCount` | number | Members on a paid tier |
| `creationCount` | number | Number of posts the creator has published |
| `currency` | string | Payout currency code (e.g. `USD`) |
| `payPerName` | string | Billing unit label — `"month"` or `"creation"` |
| `isMonthly` | boolean | `true` for monthly billing, `false` for per-creation |
| `offersFreeMembership` | boolean | Has a free tier |
| `offersPaidMembership` | boolean | Has at least one paid tier |
| `isNsfw` | boolean | Marked adult / NSFW |
| `avatarPhotoUrl` | string | Avatar image URL |
| `coverPhotoUrl` | string | Cover image URL |
| `pledgeUrl` | string | Join / pledge link |
| `tiers` | object\[] | Membership tiers — see below |

##### Tier Fields (inside `tiers[]`)

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Tier id |
| `title` | string | Tier name |
| `description` | string | Tier benefits text |
| `amountUsd` | string | Monthly price as a decimal string |
| `amountCents` | number | Monthly price in cents |
| `currency` | string | Tier currency code |
| `patronCount` | number | Patrons on this tier |
| `requiresShipping` | boolean | Tier ships a physical reward |
| `imageUrl` | string | Tier image URL |

#### Post (`recordType: "post"`)

```json
{
    "recordType": "post",
    "id": "159731976",
    "creatorId": "133349",
    "creatorVanity": "PhilosophyTube",
    "title": "Why I Make Video Essays",
    "publishedAt": "2024-11-18T16:30:00.000+00:00",
    "url": "https://www.patreon.com/posts/why-i-make-video-159731976",
    "postType": "video_external_file",
    "isPaid": false,
    "isPublic": true,
    "patronCount": 4821,
    "likeCount": 1203,
    "commentCount": 187,
    "teaserText": "A look behind the scenes at how each essay comes together...",
    "content": "<p>Full public post body — returned when you paste the post link directly.</p>",
    "thumbnailUrl": "https://c10.patreonusercontent.com/post-thumb.jpg"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"post"` |
| `id` | string | Post id |
| `creatorId` | string | Parent creator id — join key |
| `creatorVanity` | string | Parent creator handle |
| `title` | string | Post title |
| `publishedAt` | string | Publish date (ISO 8601) |
| `url` | string | Public post URL |
| `postType` | string | Image, video, audio, text, poll, or link |
| `isPaid` | boolean | Patron-only paid post |
| `isPublic` | boolean | Visible to the public |
| `patronCount` | number | Patron count recorded on the post |
| `likeCount` | number | Number of likes |
| `commentCount` | number | Number of comments |
| `teaserText` | string | Public teaser snippet, where Patreon attaches one to the post |
| `content` | string | Full post body. Returned when you paste an individual post link; for posts pulled in bulk it is included wherever Patreon exposes the body publicly, and is empty otherwise |
| `thumbnailUrl` | string | Post thumbnail / cover image URL |

### Tips for Best Results

- **Map a category cheaply first.** Run with `includePosts` off to pull every creator and their tiers in one fast pass, then re-run with posts on for only the handful worth a deep dive. This is the cheapest way to survey a whole niche.
- **Set `maxPostsPerCreator` to `0` for a full archive.** Prolific creators can have thousands of public posts — leave the cap on for sampling, drop it to `0` only when you genuinely need the complete history.
- **Paste creator links when you need patron and paid-member counts.** Patreon publishes those counts on direct creator pages but no longer exposes them for many creators surfaced through search or category browsing — so when audience-size numbers matter, feed creator handles or page links directly rather than relying on discovery alone. Where both appear, `paidMemberCount` (the number actually paying) is a truer revenue signal than `patronCount` (which includes free followers).
- **Read the `tiers` array for pricing intelligence.** The lowest `amountUsd` is the entry price and the highest is the premium tier; the spread reveals exactly how a creator packages their membership. Tiers come through on every creator, however they were discovered.
- **Mix entry methods in one run.** Combine a category browse, a keyword search, and a few pasted handles in a single run to assemble a broad, deduplicated creator list in one go — the same creator is never collected twice.
- **Categories return up to ~120 creators each.** A category browse tops out around 120 of its most popular creators — pair it with a search keyword or pasted handles to cast a wider net across a niche.
- **Paste a post link to get its full body.** A pasted individual post link returns that post with its complete `content`; posts pulled in bulk carry titles, types, engagement, and any teaser, with the body included wherever Patreon exposes it publicly.

### Pricing

**Pay only for what you collect — from $2.50 per 1,000 creators and $0.40 per 1,000 posts.** Patreon results split into two kinds, so you are billed two ways: once per creator profile and once per public post. No compute or time-based charges — you pay per creator and per post collected, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; discount tiers apply automatically based on your Apify plan.

#### Per-Event Rates

| Event | No discount | Bronze | Silver | Gold |
|-------|-------------|--------|--------|------|
| Per 1,000 creators | $3.00 | $2.80 | $2.65 | $2.50 |
| Per 1,000 posts | $0.48 | $0.45 | $0.43 | $0.40 |

#### Example Run Costs (Gold tier)

Total cost is always creators × creator rate **plus** posts × post rate:

| Run profile | Creators | Posts | Total |
|-------------|----------|-------|-------|
| 10 creators × ~20 posts | $0.025 | $0.08 | **$0.11** |
| 100 creators × ~25 posts | $0.25 | $1.00 | **$1.25** |
| 1,000 creators × ~25 posts | $2.50 | $10.00 | **$12.50** |
| Creator-only mode, 1,000 creators | $2.50 | $0.00 | **$2.50** |

Turn posts off (`includePosts: false`) and you pay for creators alone — no post charges at all. The post counts above assume the default `maxPostsPerCreator: 20`; full-archive runs (`maxPostsPerCreator: 0`) on prolific creators can multiply the post count — and the post charge — by 10× or more, so set a cap unless you genuinely need every post. Platform fees (storage, data transfer) depend on your Apify plan and are additional.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects only public Patreon data — creator pages, public membership tiers, and posts a creator has made publicly visible. It does not access patron-only content, private posts, or any data behind a login. Users are responsible for complying with applicable laws and Patreon's terms of service, including making reasonable-rate requests and respecting how creator content and personal data may be used. Do not use collected data for spam, harassment, or any unlawful purpose. </content> </invoke>

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Patreon links or handles. Use a creator page (e.g. https://www.patreon.com/PhilosophyTube or just PhilosophyTube) to get that creator and its public posts, or an individual post link (e.g. https://www.patreon.com/posts/title-123456) to get just that post. You can mix both in one list. Leave blank to use the search or category options below.

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

Find creators by topic, for example 'true crime podcast' or 'watercolor art'. Leave blank if you are using URLs or a category.

## `category` (type: `string`):

Browse top creators in a Patreon category. Each category returns up to roughly 120 of its top creators (a limit set by Patreon's browse listing, not the actor) — to cover more, add a search keyword or paste creator handles alongside it. Leave blank if you are using URLs or a search keyword.

## `includePosts` (type: `boolean`):

Also collect each creator's public posts (title, type, published date, likes, comments, and teaser). Turn this off for faster, cheaper runs when you only need creator profiles and membership tiers.

## `maxPostsPerCreator` (type: `integer`):

Maximum number of public posts to collect for each creator (newest first). Set to 0 to collect all available posts, up to a safety maximum per creator. Popular creators can have thousands of posts — a limit keeps runs fast and affordable. Each post is returned as its own result. Only applies when 'Include Public Posts' is on.

## `includeNsfw` (type: `boolean`):

Include creators marked as adult/NSFW in category results (and in search where Patreon exposes them). Off by default.

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

Maximum number of creators to collect across all of your URLs, searches, and categories. Set to 0 for no limit. We recommend keeping a limit to control cost. Posts are limited separately by 'Max Posts Per Creator'.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.patreon.com/PhilosophyTube"
  ],
  "includePosts": true,
  "maxPostsPerCreator": 20,
  "includeNsfw": false,
  "maxResults": 100
}
```

# Actor output Schema

## `creators` (type: `string`):

Table of scraped Patreon creators with patron counts, membership, and tiers.

## `posts` (type: `string`):

Table of public posts collected for the creators, with engagement metrics.

# 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 = {
    "startUrls": [
        "https://www.patreon.com/PhilosophyTube"
    ],
    "searchQuery": "",
    "category": "",
    "includePosts": true,
    "maxPostsPerCreator": 20,
    "includeNsfw": false,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/patreon-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 = {
    "startUrls": ["https://www.patreon.com/PhilosophyTube"],
    "searchQuery": "",
    "category": "",
    "includePosts": True,
    "maxPostsPerCreator": 20,
    "includeNsfw": False,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/patreon-scraper").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 '{
  "startUrls": [
    "https://www.patreon.com/PhilosophyTube"
  ],
  "searchQuery": "",
  "category": "",
  "includePosts": true,
  "maxPostsPerCreator": 20,
  "includeNsfw": false,
  "maxResults": 100
}' |
apify call solidcode/patreon-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/patreon-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Patreon Scraper",
        "description": "[💰 $2.5/1K creators + $0.4/1K posts] Extract Patreon creators and their public posts — patron/member counts, membership tiers, pricing, NSFW flags, plus post titles, likes, comments, and teasers. Paste URLs, search by keyword, or browse a category. For creator research and brand-deal scouting.",
        "version": "1.0",
        "x-build-id": "OY5WTaIyuStLM9gAh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~patreon-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-patreon-scraper",
                "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/solidcode~patreon-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-patreon-scraper",
                "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/solidcode~patreon-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-patreon-scraper",
                "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": {
                    "startUrls": {
                        "title": "Patreon URLs or Handles",
                        "type": "array",
                        "description": "Paste one or more Patreon links or handles. Use a creator page (e.g. https://www.patreon.com/PhilosophyTube or just PhilosophyTube) to get that creator and its public posts, or an individual post link (e.g. https://www.patreon.com/posts/title-123456) to get just that post. You can mix both in one list. Leave blank to use the search or category options below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Search Keyword",
                        "type": "string",
                        "description": "Find creators by topic, for example 'true crime podcast' or 'watercolor art'. Leave blank if you are using URLs or a category."
                    },
                    "category": {
                        "title": "Browse a Category",
                        "enum": [
                            "",
                            "podcasts_and_shows",
                            "music",
                            "visual_arts",
                            "video_games",
                            "tabletop_games",
                            "writing",
                            "handicrafts",
                            "apps_and_software",
                            "social_impact",
                            "lifestyle"
                        ],
                        "type": "string",
                        "description": "Browse top creators in a Patreon category. Each category returns up to roughly 120 of its top creators (a limit set by Patreon's browse listing, not the actor) — to cover more, add a search keyword or paste creator handles alongside it. Leave blank if you are using URLs or a search keyword."
                    },
                    "includePosts": {
                        "title": "Include Public Posts",
                        "type": "boolean",
                        "description": "Also collect each creator's public posts (title, type, published date, likes, comments, and teaser). Turn this off for faster, cheaper runs when you only need creator profiles and membership tiers.",
                        "default": true
                    },
                    "maxPostsPerCreator": {
                        "title": "Max Posts Per Creator",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of public posts to collect for each creator (newest first). Set to 0 to collect all available posts, up to a safety maximum per creator. Popular creators can have thousands of posts — a limit keeps runs fast and affordable. Each post is returned as its own result. Only applies when 'Include Public Posts' is on.",
                        "default": 20
                    },
                    "includeNsfw": {
                        "title": "Include Adult (NSFW) Creators",
                        "type": "boolean",
                        "description": "Include creators marked as adult/NSFW in category results (and in search where Patreon exposes them). Off by default.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Creators",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of creators to collect across all of your URLs, searches, and categories. Set to 0 for no limit. We recommend keeping a limit to control cost. Posts are limited separately by 'Max Posts Per Creator'.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
