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

Collect public Patreon creator and campaign profiles, membership tiers, audience counts, and public posts. Search by keyword or category, or use a creator or post URL.

- **URL**: https://apify.com/maximedupre/patreon-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.65 / 1,000 creator profiles

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?

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

### 🔎 Public Patreon creator and post data

Patreon researchers, creator teams, marketers, and analysts can use Patreon Scraper to collect public creator and campaign profiles, membership tiers, audience counts, and public posts in structured dataset rows. Search with a keyword or category, look up creator identifiers or URLs, or find posts with text or URLs. The output helps you compare creator pages, review membership offers, and study public post activity.

- Collect public creator and campaign fields with **[Patreon Data Scraper](https://apify.com/maximedupre/patreon-scraper/examples/patreon-data-scraper)**.
- Find public creator profiles from a keyword with **[Patreon Creator Scraper](https://apify.com/maximedupre/patreon-scraper/examples/patreon-creator-scraper)**.
- Collect public post fields from a text search with **[Patreon Post Scraper](https://apify.com/maximedupre/patreon-scraper/examples/patreon-post-scraper)**.
- Check one public creator page by identifier or URL with **[Patreon Profile Scraper](https://apify.com/maximedupre/patreon-scraper/examples/patreon-profile-scraper)**.
- Export public creator and post rows for analysis with **[Patreon Scraper](https://apify.com/maximedupre/patreon-scraper/examples/patreon-scraper)**.

#### 📦 Public creator and post records

The dataset has two row shapes. A creator row can include the public campaign profile, audience and post counts, categories, earnings when published, social links, membership tiers, and recent public posts. A post row can include the title, URL, type, publication time, access type, text, engagement counts, media references, and its creator.

Only public Patreon data is in scope. Private, member-only, deleted, or otherwise unavailable material is not collected. Optional values that Patreon does not show are omitted rather than guessed.

The Actor saves the first eligible occurrence of a source item immediately. If the same source item appears again through another submitted identifier, URL, keyword, or category, the later match is ignored. `matchedBy` and `discoveryType` show the value and source type for the first saved match.

#### ▶️ Choose a Patreon search or lookup

**Run choices**

1. Choose a target: creator profiles, creator keyword search, creator category browse, post search, or public post URLs.
2. Enter the field that belongs to that target. Use creator identifiers or URLs for a direct lookup, or use a keyword or category for discovery.
3. Turn on recent public posts when you need post rows linked to creator rows. Use the post filters only with Post search.
4. Add creator or post filters when needed, then set `maxItems` for a smaller run. Leave it empty to return all available results until the source is exhausted.
5. Start the run and open the dataset link in the Output panel.

To reduce the amount of work, turn off `includeRecentPosts` when you only need creator profiles and membership tiers. Use a direct creator or post URL when you already know what to check. Use `maxItems` when you need a small sample before a larger run.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `target` | string | Required. Choose `creatorProfiles`, `creatorKeywordSearch`, `creatorCategoryBrowse`, `postSearch`, or `postUrls`. |
| `creatorReferences` | array of string | Public creator identifiers or URLs for `creatorProfiles`. Enter at least one. |
| `creatorReferences[]` | string | One public creator identifier or Patreon URL in the list. |
| `excludeNsfw` | boolean | For `creatorProfiles`, leave out creators marked NSFW. It is ignored for the other targets. Default: `false`. |
| `creatorKeyword` | string | One keyword for finding public creators and campaigns with `creatorKeywordSearch`. |
| `creatorCategory` | string | One Patreon category or Explore classification for `creatorCategoryBrowse`. |
| `postQuery` | string | One text query for finding public posts with `postSearch`. |
| `postTypes` | array of string | Optional post or media types for `postSearch`. Listed types and source types can be used. |
| `postTypes[]` | string | One post or media type used by the post search filter. |
| `postAccess` | array of string | Optional access types for `postSearch`: `public`, `free_membership`, or `paid_membership`. |
| `postAccess[]` | string | One access type used by the post search filter. |
| `postPublished` | string | Optional publication year such as `2025`, or year and month such as `2025-01`. |
| `postOrder` | string | Order for `postSearch`: `newest` or `oldest`. |
| `postUrls` | array of object | One or more public Patreon post URL objects for `postUrls`. |
| `postUrls[].url` | string | One public Patreon post URL to fetch. |
| `includeRecentPosts` | boolean | For the three creator targets, also collect recent public posts. It is off by default and ignored for `postSearch` and `postUrls`. |
| `minimumPatrons` | integer | For creator keyword search and category browse, keep creators with at least this many patrons. Leave it empty to keep all matching creators. |
| `maxItems` | integer | Stop after this many records. Leave it empty to return all available results until the source is exhausted. The form prefill is `10`. |

**Successful beta input**

This public input came from a successful run of the current beta build:

```json
{
  "target": "creatorProfiles",
  "creatorReferences": [
    "veritasium"
  ],
  "excludeNsfw": false,
  "includeRecentPosts": false,
  "maxItems": 10
}
```

#### 🧾 Output

Fields with no public value are omitted. The dotted paths below show nested fields, while the examples keep their real nested shape.

**Creator records**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | Identifies this row as a `creator` record. |
| `matchedBy` | string | The submitted identifier, URL, keyword, or category that led to the first saved creator row. |
| `discoveryType` | string | The source type for the match: `identifier`, `url`, `keyword`, or `category`. |
| `collectedAt` | string | Time when the row was collected from Patreon. |
| `creator` | object | Public creator or campaign details. |
| `creator.id` | string | Stable Patreon ID for the creator or campaign. |
| `creator.name` | string | Public name of the creator or campaign. |
| `creator.profileType` | string | Whether the profile is a `creator` or `campaign`. |
| `creator.handle` | string | Public handle for the creator or campaign. |
| `creator.url` | string | Public Patreon profile URL. |
| `creator.description` | string | Public description of the creator or campaign. |
| `creator.imageUrl` | string | Public profile image URL. |
| `creator.coverImageUrl` | string | Public cover image URL. |
| `creator.currency` | string | Currency used by the creator or campaign. |
| `creator.publishedAt` | string | Publication time for the creator or campaign, when supplied. |
| `creator.createdAt` | string | Creation time for the creator or campaign, when supplied. |
| `creator.isNsfw` | boolean | Whether Patreon marks the creator or campaign as NSFW. |
| `creator.patronCount` | integer | Public number of patrons. |
| `creator.memberCount` | integer | Public number of members. |
| `creator.postCount` | integer | Public total number of posts. |
| `creator.creationCount` | integer | Public total number of creations. |
| `creator.categories` | array of object | Public Patreon categories for the creator or campaign. |
| `creator.categories[].name` | string | Name of a Patreon category. |
| `creator.categories[].rank` | integer | Public rank in that category. |
| `creator.earnings` | object | Public earnings reported by Patreon or the creator. |
| `creator.earnings.amount` | number | Published earnings amount. |
| `creator.earnings.currency` | string | Currency for the published earnings amount. |
| `creator.earnings.period` | string | Period covered by the published earnings: `month`, `year`, `total`, or `unknown`. |
| `creator.supportPerPatron` | object | Public average support amount for one patron. |
| `creator.supportPerPatron.amount` | number | Published support amount per patron. |
| `creator.supportPerPatron.currency` | string | Currency for the support amount per patron. |
| `creator.socialLinks` | array of object | Public social links for the creator or campaign. |
| `creator.socialLinks[].platform` | string | Name of the social platform. |
| `creator.socialLinks[].url` | string | Public URL on that social platform. |
| `creator.membershipTiers` | array of object | Public membership tiers for the creator or campaign. |
| `creator.membershipTiers[].id` | string | Stable Patreon ID for the membership tier. |
| `creator.membershipTiers[].name` | string | Public name of the membership tier. |
| `creator.membershipTiers[].description` | string | Public description of the membership tier. |
| `creator.membershipTiers[].benefits` | array of string | Public benefits included in the membership tier. |
| `creator.membershipTiers[].benefits[]` | string | One public benefit in the membership tier. |
| `creator.membershipTiers[].price` | number | Price of the membership tier. |
| `creator.membershipTiers[].currency` | string | Currency for the membership tier price. |
| `creator.membershipTiers[].url` | string | Public URL for the membership tier. |
| `creator.recentPosts` | array of object | Recent public posts linked to the creator or campaign. |
| `creator.recentPosts[].id` | string | Stable Patreon ID for a recent post. |
| `creator.recentPosts[].url` | string | Public Patreon URL for the recent post. |
| `creator.recentPosts[].title` | string | Public title of the recent post. |
| `creator.recentPosts[].type` | string | Post or media type supplied by Patreon. |
| `creator.recentPosts[].publishedAt` | string | Time when the recent post was published. |
| `creator.recentPosts[].accessType` | string | Public access level for the recent post. |
| `creator.recentPosts[].bodyText` | string | Public post body or teaser text. |
| `creator.recentPosts[].likeCount` | integer | Public number of likes on the recent post. |
| `creator.recentPosts[].commentCount` | integer | Public number of comments on the recent post. |
| `creator.recentPosts[].media` | array of object | Public media references in the recent post. |
| `creator.recentPosts[].media[].type` | string | Type of a media reference. |
| `creator.recentPosts[].media[].url` | string | Public URL for a media reference. |
| `creator.recentPosts[].media[].thumbnailUrl` | string | Public thumbnail URL for a media reference. |

**Current beta creator row**

This genuine row came from a successful current-beta creator run. It is shortened only by replacing the nested `recentPosts` array with the JSON string `"..."`. The other shown keys and values are from the public dataset row.

```json
{
  "recordType": "creator",
  "matchedBy": "veritasium",
  "discoveryType": "identifier",
  "collectedAt": "2026-08-27T11:57:48.706Z",
  "creator": {
    "name": "Veritasium",
    "url": "https://www.patreon.com/veritasium",
    "id": "70092",
    "profileType": "campaign",
    "handle": "veritasium",
    "description": "I make videos about any area of science that interests me (and that's all of it). This is what I do with most of my time. And it's not cheap - sometimes I dress up in atom costumes, rent musical instruments to make science music vids, or recreate 19th century experiments. So with your support I can make even more awesome science content.",
    "imageUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/70092/2e31720981e9452ca9f9e0cbf1c74d2f/eyJ3Ijo2MjB9/2.png?token-hash=HgSJuaZs6uVpvnYc-s5LrXhezPVxYaWrFDmAczeDZm4%3D",
    "coverImageUrl": "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/70092/ca593903846542c7b6c49d9f3f5b5751/eyJ3IjoxOTIwLCJ3ZSI6MX0%3D/3.jpg?token-hash=EvP6n2SuYOH1Ge4w7Sj0t950cShuYIuu4mPMIc5DnII%3D&token-time=1788480000",
    "currency": "USD",
    "publishedAt": "2013-05-09T01:20:46.000+00:00",
    "isNsfw": false,
    "patronCount": 18307,
    "memberCount": 2882,
    "postCount": 537,
    "creationCount": 537,
    "socialLinks": [
      {
        "platform": "tiktok",
        "url": "https://tiktok.com/%40veritasium"
      },
      {
        "platform": "twitter",
        "url": "https://twitter.com/veritasium"
      },
      {
        "platform": "instagram",
        "url": "https://www.instagram.com/veritasium_daily"
      }
    ],
    "membershipTiers": [
      {
        "name": "Free",
        "benefits": [],
        "id": "10302173",
        "price": 0,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=10302173"
      },
      {
        "name": "Hydrogen",
        "benefits": [],
        "id": "376",
        "description": "Access to the Patreon feed, including behind the scenes photos, outtakes and sneak previews of WIP videos.",
        "price": 1,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=376"
      },
      {
        "name": "Lithium",
        "benefits": [],
        "id": "377",
        "description": "+ My everlasting gratitude",
        "price": 3,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=377"
      },
      {
        "name": "Nitrogen",
        "benefits": [],
        "id": "378",
        "description": "Your name (or pseudonym) will appear on the Wall of Thanks on Veritasium.com for as long as you maintain this pledge. + All above rewards",
        "price": 7,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=378"
      },
      {
        "name": "Chlorine",
        "benefits": [],
        "id": "578389",
        "description": "+ All above rewards + My everlasting gratitude",
        "price": 17,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=578389"
      },
      {
        "name": "Veritasium",
        "benefits": [],
        "id": "379",
        "description": "Your name in the video description of all Veritasium videos published while you maintain this pledge. + All above rewards",
        "price": 42,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=379"
      },
      {
        "name": "Maximum Truth",
        "benefits": [
          "Your name will appear on screen at the end of all Veritasium videos posted while you maintain this pledge"
        ],
        "id": "578388",
        "description": "Your name will appear on screen at the end of all Veritasium videos posted while you maintain this pledge + All above rewards",
        "price": 100,
        "currency": "USD",
        "url": "https://www.patreon.com/checkout/veritasium?rid=578388"
      }
    ],
    "recentPosts": "..."
  }
}
```

**Post records**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | Identifies this row as a `post` record. |
| `matchedBy` | string | The submitted post URL or search query that led to the first saved post row. |
| `discoveryType` | string | The source type for the match: `postUrl` or `postSearch`. |
| `collectedAt` | string | Time when the row was collected from Patreon. |
| `post` | object | Public Patreon post details. |
| `post.id` | string | Stable Patreon ID for the post. |
| `post.url` | string | Public Patreon URL for the post. |
| `post.title` | string | Public title of the post. |
| `post.type` | string | Post or media type supplied by Patreon. |
| `post.publishedAt` | string | Time when the post was published. |
| `post.accessType` | string | Public access level for the post. |
| `post.bodyText` | string | Public post body or teaser text. |
| `post.likeCount` | integer | Public number of likes on the post. |
| `post.commentCount` | integer | Public number of comments on the post. |
| `post.media` | array of object | Public media references in the post. |
| `post.media[].type` | string | Type of a media reference. |
| `post.media[].url` | string | Public URL for a media reference. |
| `post.media[].thumbnailUrl` | string | Public thumbnail URL for a media reference. |
| `post.creator` | object | Public creator details linked to the post. |
| `post.creator.id` | string | Stable Patreon ID for the linked creator or campaign. |
| `post.creator.name` | string | Public name of the linked creator or campaign. |
| `post.creator.url` | string | Public Patreon URL for the linked creator or campaign. |

**Current beta post row**

This complete genuine row came from the newest successful current-beta post search run.

```json
{
  "recordType": "post",
  "matchedBy": "a",
  "discoveryType": "postSearch",
  "collectedAt": "2026-08-27T12:03:58.051Z",
  "post": {
    "id": "144834429",
    "url": "https://www.patreon.com/PhilosophyTube/posts/christmas-carol-144834429",
    "title": "Christmas Charity Livestream: A Christmas Carol",
    "type": "text_only",
    "publishedAt": "2025-12-01T19:34:49.000+00:00",
    "accessType": "public",
    "bodyText": "Hello lovely Patrons! On 20/12/25 I'm going to read  A Christmas Carol  on livestream to raise money for World Central Kitchen Christmas is a time with a lot of nice food but not everyone has enough to eat. WCK feed people who've suffered natural disasters like the LA wildfires, and also manmade disasters like in Gaza and Ukraine. I wanna use my platform to do some good this Christmas season, and also read a cosy story by a great writer! See you on the 20th! if you want to donate to the campaign you can do it here https://streamlabscharity.com/@abigail-thorn/philosophy-tube-for-world-central-kitchen",
    "likeCount": 78,
    "commentCount": 6,
    "creator": {
      "id": "114875",
      "name": "Philosophy Tube",
      "url": "https://www.patreon.com/PhilosophyTube"
    }
  }
}
```

#### 💳 Pricing

**How charges map to saved rows**

The Actor uses two buyer-facing pay-per-event charges. A successful public creator or campaign profile uses `patreon-creator-profile`. A successful public post uses `patreon-public-post`. When recent posts are included, each saved public post uses the post event. The rate shown in the Store is the rate for your Apify plan.

| Machine event | Buyer-facing title | What it covers |
| --- | --- | --- |
| `patreon-creator-profile` | Creator Profile | One successful public creator or campaign profile with its name, available audience counts, membership tiers, and public dates and links. |
| `patreon-public-post` | Public Post | One successful public post with its title, URL, type, publication time, and available media or engagement counts. |

#### 🔌 Integrations

The Output panel links to the default dataset. You can read its public creator and post rows through the Apify API or export them from Apify.

See the Patreon Scraper walkthrough:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What happens when the same creator or post matches more than one input?

The first eligible occurrence is saved right away. A later match for the same source item is ignored, and the saved row is not rewritten. `matchedBy` shows the submitted value for that first saved match.

##### Why did the run return fewer records than `maxItems`?

`maxItems` is a ceiling. The source may have fewer available matches, filters may remove some creators or posts, or later matches may be duplicates. Leave it empty when you want all available results until the source is exhausted.

##### Which target should I use for a creator lookup?

Use Creator profiles with a public creator identifier or URL when you know the page. Use Creator keyword search to find creators from one keyword. Use Creator category browse to search one Patreon category or Explore classification.

##### How do I include recent posts with creator data?

Turn on `includeRecentPosts` for Creator profiles, Creator keyword search, or Creator category browse. It is off by default and has no effect on Post search or Public post URLs.

##### Can this Actor collect private or member-only Patreon content?

No. It collects public creator, campaign, and post data only. Private, member-only, deleted, and unavailable material is outside the product scope.

##### What happens when Patreon does not publish a field?

That optional field is omitted from the row. The Actor does not fill missing public values with guesses.

##### Can I filter public post searches?

Yes. Use `postTypes`, `postAccess`, `postPublished`, and `postOrder` with Post search. These fields do not change creator lookups.

##### How can I keep a run smaller?

Set `maxItems` to a sample size, turn off `includeRecentPosts` when post rows are not needed, or use a direct creator or post URL instead of discovery. Use `minimumPatrons` to remove smaller creator matches during creator keyword or category searches.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~patreon-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [YouTube Channel Search Scraper](https://apify.com/maximedupre/youtube-channel-search-scraper) - Find public YouTube channels by topic for cross-platform creator research.
- [Influencer Scraper](https://apify.com/maximedupre/influencer-scraper) - Build public TikTok, Instagram, and YouTube creator profile lists with metrics and recent posts.
- [Instagram User Search](https://apify.com/maximedupre/instagram-user-search-scraper) - Find public Instagram accounts by niche and compare audience counts.
- [TikTok Creator Analytics Scraper](https://apify.com/maximedupre/tiktok-creator-analytics) - Review public TikTok creator audience and recent post metrics.
- [Social Media Stats Checker](https://apify.com/maximedupre/social-media-stats-checker) - Compare public follower and profile stats across supported social platforms.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose what to collect. Creator profiles accept identifiers or Patreon URLs, creator searches use one keyword or category, post search uses one text query, and public post URLs accept one or more post URLs.

## `creatorReferences` (type: `array`):

Enter one or more public Patreon creator identifiers or URLs. Use one value for one creator or add more for a simple list. Private or member-only pages are not supported.

## `excludeNsfw` (type: `boolean`):

Use this with Creator profiles to leave out creators marked NSFW. It is ignored for Creator keyword search, Creator category browse, Post search, and Public post URLs because those targets do not show a reliable NSFW mark.

## `creatorKeyword` (type: `string`):

Enter one keyword to find public Patreon creators and campaigns. Run a new search when you need another keyword.

## `creatorCategory` (type: `string`):

Enter one Patreon category or Explore classification. Run a new search when you need another category.

## `postQuery` (type: `string`):

Enter one text query for public Patreon posts. Run a new search when you need another query.

## `postTypes` (type: `array`):

Optionally choose one or more post or media types for Post search. You can also enter a source type that is not listed.

## `postAccess` (type: `array`):

Optionally limit Post search results to one or more access types.

## `postPublished` (type: `string`):

Optionally enter a publication year such as 2025, or a year and month such as 2025-01.

## `postOrder` (type: `string`):

Choose the order for Post search results.

## `postUrls` (type: `array`):

Enter one or more public Patreon post URLs. Each URL is fetched as its own public post record.

## `includeRecentPosts` (type: `boolean`):

For Creator profiles, Creator keyword search, and Creator category browse, also collect recent public posts. It is off by default and ignored for Post search and Public post URLs.

## `minimumPatrons` (type: `integer`):

For Creator keyword search and Creator category browse, return creators with at least this many patrons. It is ignored for other targets. Leave it empty to keep all matching creators.

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

Stop the run after this many records. Leave it empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "target": "creatorProfiles",
  "creatorReferences": [
    "creator-name"
  ],
  "excludeNsfw": false,
  "creatorKeyword": "music",
  "creatorCategory": "Music",
  "postQuery": "behind the scenes",
  "postTypes": [
    "video"
  ],
  "postAccess": [
    "public"
  ],
  "postPublished": "2025-01",
  "postOrder": "newest",
  "postUrls": [
    {
      "url": "https://www.patreon.com/posts/example-post"
    }
  ],
  "includeRecentPosts": false,
  "minimumPatrons": 100,
  "maxItems": 10
}
```

# Actor output Schema

## `dataset` (type: `string`):

Link to the dataset with public creator and post records from this run.

# 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 = {
    "target": "creatorProfiles",
    "creatorReferences": [
        "veritasium"
    ],
    "includeRecentPosts": false,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/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 = {
    "target": "creatorProfiles",
    "creatorReferences": ["veritasium"],
    "includeRecentPosts": False,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/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 '{
  "target": "creatorProfiles",
  "creatorReferences": [
    "veritasium"
  ],
  "includeRecentPosts": false,
  "maxItems": 10
}' |
apify call maximedupre/patreon-scraper --silent --output-dataset

```

## MCP server setup

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