# Patreon Scraper - Creators, Tiers, Patrons & Posts (`haketa/patreon-scraper`) Actor

Patreon scraper & API: discover creators by keyword and export full profiles — membership tiers & prices, patron & paid-member counts, social links, goals and recent posts. Creator-economy research, influencer discovery and lead generation — fast, no login.

- **URL**: https://apify.com/haketa/patreon-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation, Social media
- **Features:** Limited permissions
- **Stats:** 167 total users, 26 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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?

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

## Patreon Scraper 🎨 — Creators, Membership Tiers, Patron Counts & Posts

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com/haketa/patreon-scraper)
[![Data Freshness](https://img.shields.io/badge/Data-Live%20Extraction-success)]()
[![Scale](https://img.shields.io/badge/Scale-1%2C000%2B%20Creators-orange)]()
[![No Login](https://img.shields.io/badge/Auth-No%20Login%20Required-brightgreen)]()
[![Export Formats](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel%20%7C%20API-purple)]()

**Extract [Patreon](https://www.patreon.com) creator data as clean, structured JSON — without writing code and without logging in.** This **Patreon scraper** and **Patreon data extractor** lets you **discover creators by category or keyword** or target specific creator handles, then exports each creator's **full profile: membership tiers and prices, patron and paid-member counts, the "is creating" description, custom domains, social media links, funding goals, and recent public posts.**

Export your results in bulk to **JSON, CSV, Excel, XML, or via the Apify API** for **creator-economy intelligence, influencer lead generation, sponsorship outreach, and membership pricing research**.

> 💡 **Built for:** influencer-marketing and sponsorship agencies, creator-economy analysts, B2B sales and lead-generation teams building outreach lists, agencies benchmarking membership tier pricing, and data/AI teams powering creator-discovery platforms, dashboards, and market newsletters.

***

### ⚡ At a glance

| Feature | Details |
|---|---|
| **Target platform** | [Patreon.com](https://www.patreon.com) — creators, membership tiers, social links, funding goals & public posts |
| **Discovery modes** | 18 built-in **Creator categories**, custom **Search keywords**, exact **Creator handles**, or **Start URLs** |
| **Core creator data** | Name, vanity handle, canonical URL, custom domain, "is creating" tagline, full summary, currency, billing cadence |
| **Audience & revenue signals** | Total `patronCount`, `paidMemberCount`, `creationCount`, monthly vs per-creation billing, launch date |
| **Membership tiers (`tiers[]`)** | Tier title, price (`amount` & `amountCents`), currency, benefits description, post count, seat limits, Discord roles |
| **Lead-gen & outreach fields** | Connected `socials` (Twitter/X, YouTube, Twitch, Facebook, Instagram, TikTok) + creator's `customDomain` |
| **Post extraction (optional)** | Recent public posts (`title`, `teaserText`, `postType`, `likeCount`, `commentCount`, `publishedAt`, `url`) |
| **Scale & pagination** | Automatic multi-page pagination & intelligent sub-topic expansion for **1,000+ unique creators** per run (`0` duplicates) |
| **Authentication** | None required — 100% public data extraction without cookies, tokens, or OAuth |
| **Export & integrations** | JSON, CSV, Excel, XML, RSS, Apify API, Google Sheets, Make, Zapier, n8n, Slack & webhooks |

***

### 📋 Table of contents

- [Why scrape Patreon?](#-why-scrape-patreon)
- [What this Patreon scraper does](#-what-this-patreon-scraper-does)
- [High-value use cases](#-high-value-use-cases)
- [Input configuration](#-input-configuration)
- [Output dataset & examples](#-output-dataset--examples)
- [Field reference & coverage](#-field-reference--coverage)
- [Pagination & 1,000+ creator scaling](#-pagination--1000-creator-scaling)
- [How to use step by step](#️-how-to-use-step-by-step)
- [API & automation integration](#-api--automation-integration)
- [Pro tips for best results](#-pro-tips-for-best-results)
- [Frequently asked questions](#-frequently-asked-questions)
- [Limitations](#-limitations)
- [Related scrapers](#-related-scrapers)
- [Changelog](#-changelog)

***

### 🔎 Why scrape Patreon?

Patreon hosts **hundreds of thousands of active creators** across podcasts, video essays, digital art, music production, tabletop gaming, fiction writing, software, education, comics, and crafts. Each creator page is a rich source of **public B2B and creator-economy intelligence**: how large their supporting community is, how they structure and price **membership tiers**, how frequently they publish, what external domain they operate, and where else they engage audiences online (Twitter/X, YouTube, Twitch, Instagram, Facebook, TikTok).

Collecting that data manually does not scale. Opening hundreds of creator profiles one by one, expanding tier lists, copying prices and benefits, checking patron counts, and hunting for social profile links takes days of repetitive work. A dedicated **Patreon scraper** turns that workflow into a single, repeatable run that delivers normalized, analysis-ready records straight into your spreadsheet, CRM, or data warehouse.

In benchmark verification runs across 500+ creators, **100% of records** returned complete identity, billing, and membership-tier pricing arrays, **~85% included external social profile links**, and **~70% exposed live patron and paid-member counts** directly from the creator's public profile.

**Common reasons teams scrape Patreon:**

- 📈 **Influencer & creator-economy research** — map who is creating what, how fast niches are growing, and how many patrons top creators attract.
- 💰 **Sponsorship & brand-partnership discovery** — identify creators in specific verticals sized by active paying community and content output.
- 📇 **B2B lead generation & creator outreach** — build qualified prospect lists enriched with **social links** and **custom website domains** for SaaS, agency, or talent-management outreach.
- 💲 **Membership tier & pricing benchmarking** — compare tier prices ($3, $5, $10, $25+), perks, Discord role perks, and physical shipping rewards across any creative category.
- 📊 **Market & category trend analysis** — monitor creator launch dates, post volume (`creationCount`), and billing preferences (monthly vs per-creation).
- 🤖 **Datasets for AI, directories & discovery tools** — populate creator databases, search engines, talent marketplaces, and analytical dashboards.

***

### ✨ What this Patreon scraper does

This Actor provides four flexible ways to **scrape Patreon** creators, plus optional post-level extraction:

- 🗂️ **Browse 18 built-in categories** — select one or more categories (`Podcasts`, `Gaming`, `Art & Illustration`, `Music`, `Writing & Fiction`, `Comics & Webcomics`, `Video & YouTubers`, `Photography`, `Education & Courses`, `Software & Tech`, `Cooking & Food`, `Fitness & Health`, `Science`, `History`, `News & Politics`, `Anime & Manga`, `Crafts & DIY`, `Film & Animation`) with zero handles or URLs to look up.
- 🔎 **Discover by custom search keywords** — enter any niche keyword (e.g. `"true crime"`, `"tabletop rpg"`, `"watercolor"`, `"indie games"`, `"3d printing"`) and the scraper discovers matching creators across pages.
- 🔗 **Target specific creators** — pass exact Patreon vanity handles (`PhilosophyTube`, `MSsecretpod`) or full creator page URLs (`https://www.patreon.com/kurzgesagt`).
- 🧾 **Optionally collect recent public posts** — enable `includePosts` to export each creator's recent public posts (`title`, `teaserText`, `postType`, `likeCount`, `commentCount`, `publishedAt`, `url`) as separate dataset items.

For **every creator**, the scraper extracts and normalizes:

- ✅ **Identity & canonical URLs:** `name`, `vanity`, canonical `url` (`https://www.patreon.com/<vanity>`), `campaignId`, external `customDomain`, `creationName` ("is creating…"), `oneLiner`, and HTML-cleaned `summary`.
- ✅ **Audience & monetization model:** `patronCount`, `paidMemberCount` (whenever published by the creator), `isMonthly`, `payPerName`, `currency`, `creationCount`, `isNsfw`, and `isPlural`.
- ✅ **Complete membership tiers (`tiers[]`):** every public tier with `title`, `amount` (major currency units), `amountCents`, `currency`, plain-text `description` (benefits), `postCount`, `remaining` (limited-seat availability), `requiresShipping`, `isFreeTier`, `discordRoleIds`, `imageUrl`, `url`, and `tierCount`.
- ✅ **Lead-generation social links (`socials`):** connected Twitter/X, YouTube, Twitch, Facebook, Instagram, TikTok, and other external profiles.
- ✅ **Funding goals (`goals[]`):** `title`, `amountCents`, and `completedPercentage` for creators publishing active milestones.
- ✅ **Media, timestamps & creator bio:** `avatarUrl`, `coverUrl`, `mainVideoUrl`, `publishedAt`, `createdAt`, `pledgeUrl`, and personal profile metadata (`creator.name`, `creator.vanity`, `creator.url`, `creator.about`, `creator.imageUrl`).

***

### 🎯 High-value use cases

#### 1. Sponsorship & influencer marketing qualification

Unlike follower counts on free social networks, a creator's Patreon `paidMemberCount` and `patronCount` measure **verified paying superfans**. Sponsorship teams use this scraper to discover podcasts, YouTubers, newsletter writers, and educators with proven audience purchasing power, then contact them via their linked `socials` or `customDomain`.

#### 2. Creator-economy SaaS & agency lead generation

If you sell editing services, merchandise fulfillment, community software, tax/accounting services, or creator tools, Patreon creators with active paid tiers are high-intent B2B prospects. Filter exported creators by `tierCount >= 3`, `requiresShipping: true` (for merch/fulfillment leads), or `discordRoleIds` (for community-management leads).

#### 3. Membership pricing & benefit benchmarking

Launching or optimizing a membership program? Scrape 200–1,000 creators in your exact vertical (`podcast`, `comics`, `software`, `education`) to analyze median entry-tier prices, mid-tier anchor points, high-tier VIP perks, and how top earners structure their benefit descriptions.

#### 4. Talent scouting for publishers, networks & studios

Podcast networks, indie game publishers, book agents, and webcomic platforms schedule weekly runs to spot fast-growing creators with high `creationCount`, strong post engagement (`likeCount`, `commentCount`), and dedicated patron bases.

#### 5. Academic & venture research on the creator economy

Venture analysts, economists, and media researchers use bulk exports of `patronCount`, `tiers`, `currency`, `publishedAt`, and `isMonthly` to model creator income distributions, category saturation, and international currency adoption.

***

### 📥 Input configuration

Configure the Actor using the visual form in the Apify Console or pass a JSON payload via the API. **No field is required** — running with an empty input `{}` automatically returns a diverse sample of popular creators across categories.

| Field | Type | Default / Prefill | Description |
|---|---|---|---|
| `categories` | `array<string>` | Prefill: `["podcast", "gaming", "art"]` | Pick one or more built-in creator categories from the dropdown to discover top creators automatically. |
| `searchQueries` | `array<string>` | `[]` | Add your own search keywords (e.g. `"true crime"`, `"watercolor"`, `"indie games"`, `"dungeons and dragons"`). |
| `creators` | `array<string>` | `[]` | Target exact creators by Patreon handle (`PhilosophyTube`) or profile URL (`https://www.patreon.com/kurzgesagt`). |
| `startUrls` | `array<object>` | `[]` | Advanced: list of Patreon creator page URLs to scrape directly. |
| `includePosts` | `boolean` | `false` | When `true`, also collects each creator's recent public posts as separate records (`recordType: "post"`). |
| `maxPostsPerCreator` | `integer` | `20` | Maximum recent public posts to collect per creator when `includePosts` is enabled. |
| `maxItems` | `integer` | Default `100` (Prefill `60`) | Maximum number of unique creators to scrape (`0` = unlimited). Scales seamlessly to `1,000+` creators. |
| `maxConcurrency` | `integer` | `5` (`1`–`20`) | Maximum parallel HTTP requests. |
| `proxyConfiguration` | `object` | `{ "useApifyProxy": true }` | Proxy configuration. Default Apify Proxy works out of the box. |

#### Input example 1 — Discover 1,000+ creators across categories & keywords

```json
{
  "categories": ["podcast", "gaming", "art", "education"],
  "searchQueries": ["true crime", "tabletop rpg", "digital illustration"],
  "maxItems": 1000,
  "includePosts": false
}
```

#### Input example 2 — Enrich specific creator handles

```json
{
  "creators": [
    "PhilosophyTube",
    "MSsecretpod",
    "https://www.patreon.com/kurzgesagt"
  ],
  "maxItems": 50
}
```

#### Input example 3 — Creators + recent public posts for engagement analysis

```json
{
  "creators": ["PhilosophyTube"],
  "includePosts": true,
  "maxPostsPerCreator": 30
}
```

***

### 📤 Output dataset & examples

Each creator is stored as one structured item with `recordType: "creator"`. When `includePosts: true` is enabled, each public post is saved with `recordType: "post"` and linked via `campaignId` and `creatorVanity`.

#### Sample creator record (`recordType: "creator"`)

```json
{
  "recordType": "creator",
  "campaignId": "1055672",
  "name": "Matt and Shane's Secret Podcast",
  "vanity": "MSsecretpod",
  "url": "https://www.patreon.com/MSsecretpod",
  "customDomain": null,
  "creationName": "Creating Hot Casts",
  "oneLiner": null,
  "summary": "Matt and Shane's Secret Podcast is a weekly podcast hosted by Philly comedians...",
  "isMonthly": true,
  "isNsfw": false,
  "isPlural": false,
  "currency": "USD",
  "payPerName": "month",
  "patronCount": 266109,
  "paidMemberCount": 140221,
  "creationCount": 1013,
  "publishedAt": "2019-09-21T17:12:46.000+00:00",
  "createdAt": "2017-07-07T23:51:59.000+00:00",
  "pledgeUrl": "https://www.patreon.com/checkout/MSsecretpod",
  "avatarUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/1055672/.../1.png",
  "coverUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/1055672/.../1.jpg",
  "mainVideoUrl": null,
  "creator": {
    "name": "Matt and Shane's Secret Podcast",
    "vanity": "MSsecretpod",
    "url": "https://www.patreon.com/MSsecretpod",
    "about": null,
    "imageUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/1055672/.../1.png"
  },
  "socials": {
    "twitter": "mssecretpod",
    "facebook": "https://www.facebook.com/MSsecretpodcast/"
  },
  "tiers": [
    {
      "title": "All Access",
      "amount": 10,
      "amountCents": 1000,
      "currency": "USD",
      "description": "Access to the full back-catalogue and all weekly premium episodes.",
      "postCount": 1013,
      "remaining": null,
      "requiresShipping": false,
      "isFreeTier": false,
      "discordRoleIds": ["1234567890"],
      "imageUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/reward/.../1.png",
      "url": "https://www.patreon.com/checkout/MSsecretpod?rid=10305642"
    }
  ],
  "tierCount": 5,
  "goals": [],
  "scrapedAt": "2026-11-10T02:00:00.000Z"
}
```

#### Sample post record (`recordType: "post"`, when `includePosts: true`)

```json
{
  "recordType": "post",
  "campaignId": "1055672",
  "creatorVanity": "MSsecretpod",
  "postId": "114982301",
  "title": "Episode 512 - Paytch Exclusive",
  "teaserText": "This week on the secret podcast...",
  "publishedAt": "2026-10-28T19:15:00.000+00:00",
  "isPublic": true,
  "postType": "audio_embed",
  "likeCount": 4120,
  "commentCount": 685,
  "url": "https://www.patreon.com/posts/episode-512-114982301",
  "scrapedAt": "2026-11-10T02:00:01.000Z"
}
```

***

### 📊 Field reference & coverage

#### 🪪 Creator Identity & Profile

| Field | Type | Coverage | Description |
|---|---|---|---|
| `recordType` | `string` | 🟢 High (100%) | `"creator"` for creator profiles, `"post"` for post records. |
| `campaignId` | `string` | 🟢 High (100%) | Unique Patreon campaign identifier. |
| `name` | `string` | 🟢 High (100%) | Creator or campaign display name. |
| `vanity` | `string` | 🟢 High (100%) | Creator vanity handle (e.g. `MSsecretpod`). |
| `url` | `string` | 🟢 High (100%) | Canonical Patreon URL (`https://www.patreon.com/<vanity>`). |
| `customDomain` | `string \| null` | 🟡 Conditional | External custom website domain if linked by the creator. |
| `creationName` | `string \| null` | 🟢 High (~99%) | The "is creating…" description line. |
| `oneLiner` | `string \| null` | 🟡 Conditional | Short campaign tagline when set by the creator. |
| `summary` | `string \| null` | 🟢 High (~98%) | Full campaign bio/description converted to clean plain text. |
| `publishedAt` / `createdAt` | `string` | 🟢 High (100%) | ISO timestamps of when the campaign launched and was created. |
| `avatarUrl` / `coverUrl` | `string \| null` | 🟢 High (100%) | High-resolution avatar and banner image URLs. |
| `mainVideoUrl` | `string \| null` | 🟡 Conditional | Campaign intro video URL when present. |

#### 📈 Audience, Monetization & Membership Tiers

| Field | Type | Coverage | Description |
|---|---|---|---|
| `patronCount` | `integer \| null` | 🟢 High (~70%) | Total members/patrons (populated whenever the creator leaves counts public). |
| `paidMemberCount` | `integer \| null` | 🟢 High (~70%) | Paying tier subscribers (populated whenever public). |
| `creationCount` | `integer \| null` | 🟢 High (~99%) | Total posts/creations published on the campaign. |
| `isMonthly` | `boolean` | 🟢 High (100%) | `true` for monthly subscription billing, `false` for per-creation billing. |
| `payPerName` | `string \| null` | 🟢 High (~99%) | Billing unit label (e.g. `"month"`, `"podcast"`, `"video"`). |
| `currency` | `string` | 🟢 High (100%) | Campaign currency ISO code (`USD`, `EUR`, `GBP`, `CAD`, `AUD`, etc.). |
| `isNsfw` / `isPlural` | `boolean` | 🟢 High (100%) | Adult-content flag and team/solo creator flag. |
| `pledgeUrl` | `string` | 🟢 High (100%) | Direct checkout/membership join URL. |
| `tiers` | `array<object>` | 🟢 High (100%) | Full list of membership tiers (`title`, `amount`, `amountCents`, `currency`, `description`, `postCount`, `remaining`, `requiresShipping`, `isFreeTier`, `discordRoleIds`, `imageUrl`, `url`). |
| `tierCount` | `integer` | 🟢 High (100%) | Number of membership tiers offered. |
| `goals` | `array<object>` | 🟡 Conditional | Funding goals (`title`, `amountCents`, `completedPercentage`) when published. |

#### 🔗 Lead Generation, Socials & Posts

| Field | Type | Coverage | Description |
|---|---|---|---|
| `socials` | `object` | 🟢 High (~85%) | Map of external social profiles (`twitter`, `youtube`, `twitch`, `facebook`, `instagram`, `tiktok`, etc.). |
| `creator` | `object` | 🟢 High (100%) | Owner user object: `name`, `vanity`, `url`, `about`, `imageUrl`. |
| `postId` / `title` / `postType` | `string` | 🟡 Opt-in (`includePosts`) | Post ID, headline, and format (`audio_embed`, `video_embed`, `text_only`, `image_file`, etc.). |
| `likeCount` / `commentCount` | `integer` | 🟡 Opt-in (`includePosts`) | Engagement metrics on each scraped public post. |
| `scrapedAt` | `string` | 🟢 High (100%) | ISO-8601 timestamp of extraction. |

***

### 🔁 Pagination & 1,000+ creator scaling

This **Patreon scraper** is engineered to scale smoothly from a quick 50-creator sample to **1,000+ unique creators** in a single run:

1. **Multi-page cursor pagination:** Every search query automatically advances through all available search result pages until exhausted or until your `maxItems` target is met.
2. **Automatic sub-topic & category expansion:** When `maxItems` is set to a large target (such as `500`, `1,000`, or `5,000`) and the initial category or keyword set has fewer pages than needed, the scraper automatically expands into curated sub-genres and related search queries (e.g., expanding `podcast` into `true crime podcast`, `comedy podcast`, `history podcast`, `storytelling podcast`, and more) so large runs never stall early.
3. **Dual-layer de-duplication:** Every discovered creator is de-duplicated both by **vanity handle** (`seenVanity`) and by **campaign ID** (`seenCampaignIds`). Dead or unpublished handles are automatically skipped and replaced so your dataset hits your requested `maxItems` count with **0 duplicates**.
4. **Cursor-paginated posts:** When `includePosts` is enabled, each creator's public posts are paged via cursor up to `maxPostsPerCreator`.

***

### ⚙️ How to use step by step

1. Open **[Patreon Scraper](https://apify.com/haketa/patreon-scraper)** in the Apify Console and click **Try for free**.
2. Pick one or more **Creator categories**, type custom **Search keywords**, or paste exact **Specific creators** (handles or URLs).
3. Set **Max creators** (`maxItems`) — e.g. `60` for a quick test, `500` or `1000` for deep market mapping, or `0` for unlimited.
4. *(Optional)* Enable **Include recent posts** (`includePosts: true`) if you want post-level engagement metrics.
5. Click **Start** and watch live progress in the run status bar.
6. Download your dataset in **JSON, CSV, Excel (XLSX), XML, or HTML** from the **Storage / Dataset** tab.

***

### 🔌 API & automation integration

Trigger runs and fetch structured Patreon data programmatically from Python, Node.js, cURL, or no-code workflow tools (**Make, Zapier, n8n, Google Sheets, Clay, HubSpot**).

#### Node.js example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('haketa/patreon-scraper').call({
    categories: ['podcast', 'gaming', 'art'],
    searchQueries: ['tabletop rpg', 'true crime'],
    maxItems: 250,
    includePosts: false,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} unique Patreon creators.`);
```

#### Python example

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])

run = client.actor("haketa/patreon-scraper").call(run_input={
    "searchQueries": ["indie games", "3d printing"],
    "maxItems": 500,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("patronCount"), item["tierCount"], item["url"])
```

***

### 💡 Pro tips for best results

- 🎯 **Combine categories and niche keywords** when targeting 1,000+ creators — overlapping queries are automatically de-duplicated at zero extra cost.
- ⚡ **Keep `includePosts: false` for fast discovery runs** — creator-only runs finish in seconds to a couple of minutes; enable posts only on your shortlisted handles.
- 💎 **Sort by `paidMemberCount` or `patronCount` in Excel/Sheets** to immediately surface the highest-velocity creators in your target vertical.
- 🔗 **Enrich `customDomain` and `socials`** — feed the extracted `customDomain` or `socials.youtube` links into email-discovery tools for direct sponsor/B2B outreach.
- 📅 **Schedule weekly or monthly runs** using Apify Schedules to track patron growth (`patronCount` delta) and tier pricing adjustments over time.

***

### ❓ Frequently asked questions

**Do I need a Patreon account, cookies, or OAuth API token?**
No. This scraper extracts publicly visible creator profiles, tiers, and public posts with zero login, zero cookies, and no API keys.

**How many creators can I extract in a single run?**
From a small sample of 50 creators up to **1,000+ unique creators** in a single run. Set `maxItems: 1000` (or `0` for unlimited) and the scraper automatically paginates and expands sub-topics to fulfill your quota.

**Why is `patronCount` or `paidMemberCount` null on some records?**
Patreon allows creators to toggle whether their patron count and earnings are publicly displayed. About **70% of creators** keep `patronCount` and `paidMemberCount` public; when hidden by the creator, the scraper returns a clean `null`.

**Are all membership tiers and prices included?**
Yes. Every public tier on a creator's page is returned inside the `tiers[]` array with exact prices (`amount`, `amountCents`, `currency`), benefits description, Discord role integrations, and shipping requirements.

**Can I scrape both creator profiles and their posts in one run?**
Yes — turn on `includePosts: true` and set `maxPostsPerCreator` (e.g. `20`). Creator records (`recordType: "creator"`) and post records (`recordType: "post"`) are linked via `campaignId` and `vanity` / `creatorVanity`.

**What export formats are supported?**
JSON, CSV, Excel (XLSX), XML, HTML table, and RSS — plus direct REST access via the Apify API.

***

### ⚠️ Limitations

- Only **publicly accessible** creator profiles, tiers, and public posts are extracted; locked patron-only post body content is not accessible.
- `patronCount` and `paidMemberCount` are populated whenever the creator chooses to make them public (~70% of profiles).
- Optional fields such as `customDomain`, `oneLiner`, `mainVideoUrl`, and `goals` appear only when configured by the creator.

***

### 🔗 Related scrapers

Build a complete creator-economy and influencer-intelligence pipeline by pairing this Actor with:

- [YouTube Contact Scraper](https://apify.com/haketa/youtube-contact-scraper) — extract channel contact details, social links, and business emails.
- [YouTube Comments Scraper](https://apify.com/haketa/youtube-comments-scraper) — collect viewer comments, authors, and engagement metrics.
- [Linktree Scraper](https://apify.com/haketa/linktree-scraper) — extract all bio links, social profiles, and creator CTAs from Linktree pages.
- [Xiaohongshu (RedNote) Scraper](https://apify.com/haketa/xiaohongshu-rednote-scraper) — scrape creators and posts from RED / Xiaohongshu.
- [Bilibili Scraper](https://apify.com/haketa/bilibili-scraper) — collect creator profiles and video metrics from Bilibili.

***

### 📋 Changelog

#### v1.2 (2026-11)

- **Unlocked 1,000+ creator pagination & sub-topic expansion:** Added automatic category sub-topic expansion (`CATEGORY_EXPANSIONS` + discovery pool) and removed empty-run clamping when `maxItems` is explicitly provided, enabling single-run extraction of 1,000+ unique creators.
- **Exact quota replenishment:** Dead or private vanity handles no longer consume `maxItems` slots; added secondary `campaignId` deduplication alongside vanity deduplication (`0%` duplicate rate).
- **Faster prefill execution:** Tuned prefill to `maxItems: 60` for rapid `< 60s` default runs while supporting unlimited scale.
- **Documentation upgrade:** Added `At a glance` summary, emoji-grouped field coverage tables, and API integration snippets.

#### v1.1 (2026-10)

- Added multi-page search cursor repair and verified 500-creator benchmark run with 100% core field coverage and 0 duplicates.

#### v1.0 (2026-06)

- Initial release with category & keyword discovery, vanity resolution, full membership tier extraction, social connection mapping, and optional cursor-paginated public posts.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/patreon-scraper/changelog.md

# Actor input Schema

## `categories` (type: `array`):

Pick one or more categories and the scraper discovers popular creators in each — no handles or URLs to type. Leave everything empty to get a diverse mix of top creators.

## `searchQueries` (type: `array`):

Optional: add your own keywords to discover creators, e.g. 'true crime', 'watercolor', 'indie games'. The scraper finds matching creators and exports each full profile.

## `creators` (type: `array`):

Optional: target exact creators by their Patreon handle (e.g. 'PhilosophyTube') or page URL (e.g. https://www.patreon.com/PhilosophyTube).

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

Optional advanced input: a list of Patreon creator page URLs to scrape directly.

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

Also collect each creator's recent public posts (title, type, likes, comments, date, URL) as separate records.

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

When 'Include recent posts' is on, the most recent N posts per creator.

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

Maximum number of creators to scrape. Use 0 for no limit.

## `proxyConfiguration` (type: `object`):

Proxy settings used to run the scraper reliably. The default works out of the box.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests.

## Actor input object example

```json
{
  "categories": [
    "podcast",
    "gaming",
    "art"
  ],
  "searchQueries": [],
  "creators": [],
  "includePosts": false,
  "maxPostsPerCreator": 20,
  "maxItems": 60,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 5
}
```

# Actor output Schema

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

All creator and post records collected during the run.

## `runUrl` (type: `string`):

Open this run in the Apify Console.

# 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 = {
    "categories": [
        "podcast",
        "gaming",
        "art"
    ],
    "searchQueries": [],
    "creators": [],
    "maxItems": 60,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "categories": [
        "podcast",
        "gaming",
        "art",
    ],
    "searchQueries": [],
    "creators": [],
    "maxItems": 60,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/patreon-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 '{
  "categories": [
    "podcast",
    "gaming",
    "art"
  ],
  "searchQueries": [],
  "creators": [],
  "maxItems": 60,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/patreon-scraper --silent --output-dataset

```

## MCP server setup

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