# Patreon Creator Scraper (`devilscrapes/patreon-creator-scraper`) Actor

Scrape Patreon creator pages for subscriber counts and revenue signals — patron count, paid member count, pledge currency, and campaign metadata — for competitor research, market sizing, and creator monitoring.

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

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

# README

<div align="center">
  <img src=".actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## Patreon Creator Scraper

**💰 $6.20 / 1 000 results**  ·  pay only for results  ·  no credit card to try

*We do the dirty work so your dataset stays clean.* 😈

Scrape Patreon creator pages for subscriber counts and revenue signals — patron count, paid member count, pledge currency, and campaign metadata — for competitor research, market sizing, and creator monitoring.

</div>

***

### 🎯 What this scrapes

Every public Patreon creator page embeds the campaign's own stats in its page JSON — patron count, paid member count, pledge currency, one-liner, cover art, and more. This Actor pulls that JSON straight off `patreon.com/<creator>` for one creator or a batch of them at once and normalizes it into a clean row per campaign: subscriber counts, revenue signals, and creator metadata ready for competitor research, market sizing, or creator-monitoring dashboards.

### 🔥 What we handle for you

- 📦 **Batch by design** — pass one creator or a hundred in a single run; each is fetched and classified independently.
- 🧭 **Clear outcome classification** — not-found, no-active-campaign, and unsupported-template pages are distinguished from real failures, so a mixed batch never crashes your run.
- 🔁 **We retry with exponential backoff** on `408 / 429 / 5xx` and honour `Retry-After` — up to 5 attempts per page.
- 🧊 **Clean, typed dataset rows** — Pydantic-validated, ISO-8601 timestamps, JSON / CSV / Excel export straight from the Apify Console.
- 💰 **You pay only for results that land.** No campaign data, no charge — only the small actor-start warm-up fee.

### 💡 Use cases

- **Competitor research** — benchmark patron counts and pledge revenue across creators in the same niche.
- **Market sizing** — estimate the addressable Patreon audience for a content category before launching a membership.
- **Creator monitoring** — track subscriber and revenue trend signals for creators you follow or represent.
- **Lead generation** — surface active, well-funded creators for sponsorship or partnership outreach.

### ⚙️ How to use it

1. Click **Try for free** at the top of the page.
2. Fill in the input form — most fields have sensible defaults.
3. Click **Start**. Output streams into the run's dataset.
4. Export from **Storage → Dataset** as JSON, CSV, or Excel — or fetch via the API.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `creators` | `array` | **yes** | \['philosophytube', 'contrapoints'] | Patreon creator vanity slugs (e.g. 'philosophytube') or full profile URLs (e.g.… |
| `proxyConfiguration` | `object` | no | RESIDENTIAL (US) | Apify Proxy configuration. Patreon serves a Cloudflare challenge to datacenter IPs, so the RESIDENTIAL group is required and preset. |

#### Example input

```json
{
  "creators": [
    "philosophytube",
    "contrapoints"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

### 📤 Output

Every row is one dataset item.

| Field | Type | Notes |
|---|---|---|
| `creator_input` | `string` | The raw creators\[] entry this row was resolved from (slug or URL, as supplied). |
| `campaign_id` | `string` | Patreon's numeric campaign id (JSON:API data.id), kept as a string. |
| `name` | `string` | Campaign / creator display name. |
| `vanity` | `string` | Creator's vanity URL slug. |
| `url` | `string` | Canonical Patreon profile URL. |
| `one_liner` | `string` | Creator's short tagline. |
| `summary` | `string` | Campaign summary (HTML). |
| `patron_count` | `integer` | Total patron count. |
| `paid_member_count` | `integer` | Paying member count. |
| `pledge_sum_currency` | `string` | Currency code of the pledge total, e.g. 'EUR'. |
| `campaign_currency` | `string` | Campaign's own default currency, e.g. 'USD' — can differ from pledge\_sum\_currency for legacy campaigns. |
| `is_monthly` | `boolean` | Whether the campaign bills monthly. |
| `pay_per_name` | `string` | Billing cadence label, e.g. 'month'. |
| `creation_count` | `integer` | Number of posts/creations published. |
| `avatar_photo_url` | `string` | Creator avatar image URL. |
| `cover_photo_url` | `string` | Campaign cover image URL. |
| `pledge_url` | `string` | Join / pledge URL for the campaign. |
| `published_at` | `string` | ISO 8601 campaign publish date. |
| `is_nsfw` | `boolean` | Whether the campaign is flagged NSFW. |
| `offers_paid_membership` | `boolean` | Whether the campaign offers a paid membership tier. |
| `offers_free_membership` | `boolean` | Whether the campaign offers a free membership tier. |
| `scraped_at` | `string` | ISO-8601 UTC row creation timestamp. |

#### Example output

```json
{
  "creator_input": "philosophytube",
  "campaign_id": "9198",
  "name": "Philosophy Tube",
  "vanity": "philosophytube",
  "url": "https://www.patreon.com/philosophytube",
  "one_liner": "Philosophy videos for the people",
  "summary": "<p>...</p>",
  "patron_count": 12345,
  "paid_member_count": 8901,
  "pledge_sum_currency": "EUR",
  "campaign_currency": "USD",
  "is_monthly": true,
  "pay_per_name": "month",
  "creation_count": 210,
  "avatar_photo_url": "https://c10.patreonusercontent.com/...",
  "cover_photo_url": "https://c10.patreonusercontent.com/...",
  "pledge_url": "https://www.patreon.com/join/philosophytube",
  "published_at": "2015-03-02T00:00:00+00:00",
  "is_nsfw": false,
  "offers_paid_membership": true,
  "offers_free_membership": true,
  "scraped_at": "2026-09-15T12:00:00+00:00"
}
```

### 💰 Pricing

Pay-Per-Event — you pay only when these events fire:

| Event | USD | What it is |
|---|---:|---|
| `actor-start` | $0.2 | One-off warm-up charge per run |
| `result` | $0.006 | Per dataset item |

Example: 1 000 results at the rates above ≈ **$6.20**. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

### 🚧 Limitations

This Actor returns campaign-level aggregate stats — patron count, paid member count, pledge currency, and related campaign metadata — not per-patron or per-pledge rows, since that detail isn't published on the public creator page. Some vanity slugs resolve to an alternate Patreon page template with no embedded campaign JSON; those are skipped with a status message rather than guessed at.

### ❓ FAQ

**Do I need a Patreon account to use this Actor?**

No — the Actor reads the public campaign data every creator page already publishes. Enter the creator's vanity slug or profile URL and run.

**What happens if a creator slug doesn't exist or has no active campaign?**

That entry is skipped with a clear status message and the run still succeeds — a missing creator or an inactive campaign is a normal outcome, not a failure.

**Can I pass a full profile URL instead of a slug?**

Yes — both 'philosophytube' and 'https://www.patreon.com/philosophytube' resolve to the same creator.

**Does this return per-patron or per-pledge data?**

No — this Actor returns campaign-level aggregate stats (patron count, paid member count, pledge currency, and similar fields), not individual patron or pledge records.

### 💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an
issue on the Actor's **Issues** tab on Apify Console — we ship
fixes weekly and we read every report.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

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

Patreon creator vanity slugs (e.g. 'philosophytube') or full profile URLs (e.g. 'https://www.patreon.com/philosophytube'). One row is returned per creator that resolves to a live campaign.

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

Apify Proxy configuration. Patreon serves a Cloudflare challenge to datacenter IPs, so the RESIDENTIAL group is required and is preset here.

## Actor input object example

```json
{
  "creators": [
    "philosophytube",
    "contrapoints"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

All dataset items as JSON.

## `datasetItemsCsv` (type: `string`):

Same data exported to CSV.

## `datasetView` (type: `string`):

Open the run dataset in the 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 = {
    "creators": [
        "philosophytube",
        "contrapoints"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/patreon-creator-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 = {
    "creators": [
        "philosophytube",
        "contrapoints",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("devilscrapes/patreon-creator-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 '{
  "creators": [
    "philosophytube",
    "contrapoints"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call devilscrapes/patreon-creator-scraper --silent --output-dataset

```

## MCP server setup

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