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

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://beta-securitybyobscurity.apify.com/louisdeconinck/patreon-scraper.md
- **Developed by:** [Louis Deconinck](https://beta-securitybyobscurity.apify.com/louisdeconinck) (community)
- **Categories:** Social media
- **Stats:** 157 total users, 16 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$19.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.
You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

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

## Actor input object example

```json
{
  "searchQueries": [
    "apify"
  ],
  "maxRequestsPerCrawl": 100
}
```

# 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"
    ]
};

// 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"] }

# 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("💾 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 '{
  "searchQueries": [
    "apify"
  ]
}' |
apify call louisdeconinck/patreon-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Patreon Scraper",
        "description": "Scrape data from Patreon creator pages based on search queries. Extract detailed information about creators, their tiers, social media links, and other relevant data.",
        "version": "0.0",
        "x-build-id": "Qv3cBaHTnmqbxe5Zk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/louisdeconinck~patreon-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-louisdeconinck-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/louisdeconinck~patreon-scraper/runs": {
            "post": {
                "operationId": "runs-sync-louisdeconinck-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/louisdeconinck~patreon-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-louisdeconinck-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",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "List of search queries to be processed.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxRequestsPerCrawl": {
                        "title": "Max Requests Per Crawl",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of requests per crawl.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
