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

Scrape data from Patreon creator pages based on search queries. Extract detailed information about creators, their tiers, social media links, and other relevant data.

- **URL**: https://apify.com/louisdeconinck/patreon-scraper.md
- **Developed by:** [Louis Deconinck](https://apify.com/louisdeconinck) (community)
- **Categories:** Social media
- **Stats:** 321 total users, 2 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

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

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

## 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

This Apify actor scrapes data from Patreon creator pages based on search queries. It extracts detailed information about creators, their tiers, social media links, and other relevant data.

### Features

- Search for Patreon creators using custom queries
- Extract creator profile information
- Gather tier details including prices and descriptions
- Collect social media links
- Retrieve statistics like patron count, post count, and earnings (when available)

### Input

The actor accepts the following input parameters:

- `searchQueries` (array): A list of search queries to find Patreon creators. Each query will be used to search for creators on Patreon.
- `maxRequestsPerCrawl` (number): The maximum number of requests the crawler will make. Defaults to 100.

### Output

Each item in the dataset contains the following fields:

- `url`: The URL of the creator's Patreon page
- `id`: Unique identifier for the campaign
- `type`: Type of the document (usually "campaign-document")
- `avatar_photo_blurred_url`: URL of the blurred avatar photo
- `avatar_photo_url`: URL of the avatar photo
- `creation_name`: What the creator is creating (e.g., "Python and Web Scraping Coding Videos")
- `creator_name`: Name of the creator
- `is_nsfw`: Boolean indicating if the content is NSFW
- `name`: Name of the campaign
- `patron_count`: Number of patrons
- `total_posts`: Total number of posts
- `primary_theme_color`: Primary theme color of the Patreon page
- `thumb`: URL of the thumbnail image
- `youtube`, `instagram`, `twitter`, `facebook`, `twitch`, `tiktok`: Social media links (if available)
- `tiers`: Array of tier objects, each containing:
  - `id`: Tier ID
  - `name`: Tier name
  - `price`: Tier price
  - `description`: Tier description
  - `discord_access`: Boolean indicating if the tier includes Discord access
  - `image`: URL of the tier image (if available)
- `about`: About section content
- `total_members`: Total number of members
- `paid_members`: Number of paid members
- `post_count`: Number of posts
- `earnings_per_month`: Estimated earnings per month (if available)

### Example output

```json
{
	"url": "https://www.patreon.com/johnwatsonrooney",
	"id": "campaign_6277430",
	"type": "campaign-document",
	"avatar_photo_blurred_url": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/6277430/a9a48071838644feaa361b6474ff6daf/eyJiIjoyMCwidyI6MjQwfQ==/6.jpg?token-time=2145916800&token-hash=MGPku40A1m93pfGQ2NJT7eJmoSUPBUVmmJ-m9bVk_-o%3D",
	"avatar_photo_url": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/6277430/a9a48071838644feaa361b6474ff6daf/eyJ3IjoyNDB9/6.jpg?token-time=2145916800&token-hash=xtx02SayUIDHB1spmyVyBckrjHuQBYUtzrMi62KxNvU%3D",
	"creation_name": "creating Python and Web Scraping Coding Videos",
	"creator_name": "John Rooney",
	"is_nsfw": 0,
	"name": "John Rooney",
	"patron_count": 212,
	"total_posts": 125,
	"primary_theme_color": 592911,
	"thumb": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/6277430/a9a48071838644feaa361b6474ff6daf/eyJ3IjoyNDB9/6.jpg?token-time=2145916800&token-hash=xtx02SayUIDHB1spmyVyBckrjHuQBYUtzrMi62KxNvU%3D",
	"youtube": null,
	"instagram": "https://www.instagram.com/jhnw.r",
	"twitter": "https://twitter.com/jhnwr",
	"facebook": null,
	"twitch": null,
	"tiktok": null,
	"tiers": [
		{
			"id": "6784667",
			"name": "Official Tier 1 Patron",
			"price": 4.5,
			"description": "Thank you for your support! This will enable me to continue to make more and better content, and includes Patron only updates on what I am doing and what I am working on.Patron-only updatesBehind The ScenesDiscord access",
			"discord_access": true
		},
		{
			"id": "9162213",
			"name": "Official Tier 2 Patron",
			"price": 6,
			"description": "Same as T1 for those who wish to give a little more!Patron-only updatesBehind The ScenesDiscord access",
			"discord_access": true
		},
		{
			"id": "9162216",
			"name": "Official Tier 3 Patron",
			"price": 12,
			"description": "Same as other tiers, for those who who wish to contribute more. Your support is greatly appreciated.Patron-only updatesBehind The ScenesDiscord access",
			"discord_access": true
		}
	],
	"about": "Hi there - I'm John. I enjoy solving problems using code and creating videos to help others do the same. Focusing on Python and an interest in the web lead me to web scraping, and how it can be a great tool for people to use to learn to code. Surely you've heard the saying about how the best way to learn is to \"do some projects\", well web scraping is a great project idea that scales well, provides good challenges and can have some personal benefit to you. Anyone can start!Along with data extraction my other main focus is Python and web technologies, building apps with Flask, Django or FastAPI, and learning how to integrate front end frameworks like VueJS to a Python backend.Thank you for coming to my Patreon page and considering support me to carry on creating content and helping others learn in bigger and better ways.JR",
	"total_members": 214,
	"paid_members": 32,
	"post_count": 125,
	"earnings_per_month": 110.2
}
```

# Actor input Schema

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

List of search queries to be processed.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of requests per crawl.

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

Proxy configuration to use for the scraper.

## Actor input object example

```json
{
  "searchQueries": [
    "apify"
  ],
  "maxRequestsPerCrawl": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQueries": [
        "apify"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("louisdeconinck/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 = {
    "searchQueries": ["apify"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

```

## MCP server setup

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