# Patreon Scraper: Creators, Posts & Comments (`scrapingmonkey/patreon-scraper`) Actor

Scrape public Patreon creators, membership tiers, posts, comments and replies, collections, and Shop products. Export structured profiles, engagement, media, paywall, pricing, and revenue-estimate data without login.

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

## Pricing

from $0.65 / 1,000 creator search 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/platform/actors/running/actors-in-store#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

## Patreon Scraper - Creators, Posts, Comments, Collections and Shop Data

Extract structured public Patreon data for creator research, content analysis, audience engagement tracking, collection discovery, and digital-product monitoring without Patreon API credentials.

- Search Patreon creators by keyword and optionally enrich every result
- Extract creator profiles, public member metrics, membership tiers, benefits, social links, and navigation
- Collect creator feeds and individual text, image, audio, video, link, poll, public, and locked post metadata
- Export comments, helpful votes, creator interactions, and complete public reply threads
- Paginate creator collections, collection posts, and Patreon Shop products
- Process up to 100 inputs per run with bounded concurrency, retries, proxy rotation, streaming output, and per-input limits
- Resume recurring post exports with checkpoints from `RUN_SUMMARY`, and filter by dates, access, type, likes, or comments
- Route every Patreon request through the built-in Apify Residential Proxy; no proxy setup is exposed to the user
- Export results as JSON, CSV, Excel, XML, or access them through the Apify API

### What can you do with this Actor?

| Mode | Input | Output | Best for |
| --- | --- | --- | --- |
| `search` | Search keywords | Creator rows | Creator discovery and market mapping |
| `creator` | Creator URLs, vanity names, or campaign IDs | Full creator row; optional post, collection, and product rows | Creator and membership research |
| `posts` | Creator URLs, vanity names, or campaign IDs | Paginated post rows | Content archives and publishing analysis |
| `postDetails` | Post IDs or URLs | Rich post rows; optional comment rows | Content, media, poll, and paywall metadata |
| `comments` | Post IDs or URLs | Top-level comments and optional replies | Engagement and qualitative analysis |
| `collections` | Creator URLs, vanity names, or campaign IDs | Collection rows | Catalog and series discovery |
| `collectionPosts` | Collection IDs or URLs | Posts belonging to each collection | Ordered collection exports |
| `shop` | Creator URLs, vanity names, or campaign IDs | Shop product rows | Digital-product and pricing research |
| `productDetails` | Product IDs or URLs | Rich product rows | Individual product and media extraction |

Choose one mode per run. The `creator` mode can additionally emit posts, collections, and Shop products by enabling `includePosts`, `includeCollections`, and `includeShop`. The `postDetails` mode can additionally emit comments with `includeComments`.

### Quick start

1. Open the Actor and click **Try for free**.
2. Select `search` and enter one or more Patreon search terms.
3. Set `maxResults`; enable `includeDetails` when full membership data is needed.
4. Click **Start**.
5. Preview the dataset or download it in your preferred format.

This small input returns up to 10 public creator results:

```json
{
  "mode": "search",
  "searchTerms": ["digital artist"],
  "maxResults": 10,
  "includeDetails": false
}
```

`maxResults` applies separately to every search term or resource input. One dataset row represents one creator, post, comment, collection, or product. Failed inputs are reported in logs and `RUN_SUMMARY`, not mixed into business data.

### Input examples

#### Search for creators

```json
{
  "mode": "search",
  "searchTerms": ["digital artist", "independent podcast"],
  "maxResults": 25,
  "includeDetails": true
}
```

#### Full creator profile with related resources

```json
{
  "mode": "creator",
  "creatorUrls": ["https://www.patreon.com/cw/jackdanreact"],
  "maxResults": 50,
  "includePosts": true,
  "includeCollections": true,
  "includeShop": true
}
```

#### Creator posts

```json
{
  "mode": "posts",
  "creatorUrls": ["jackdanreact", "12196794"],
  "maxResults": 100
}
```

#### Post details with comments

```json
{
  "mode": "postDetails",
  "postIds": ["131455912", "https://www.patreon.com/posts/a-public-post-139651206"],
  "includeComments": true,
  "maxComments": 100,
  "commentSort": "newest",
  "includeReplies": true
}
```

#### Comments and replies

```json
{
  "mode": "comments",
  "postIds": ["163588644"],
  "maxResults": 250,
  "commentSort": "top",
  "includeReplies": true
}
```

#### Creator collections

```json
{
  "mode": "collections",
  "creatorUrls": ["https://www.patreon.com/cw/alexhefner"],
  "maxResults": 100
}
```

#### Posts from a collection

```json
{
  "mode": "collectionPosts",
  "collectionIds": ["1986892", "https://www.patreon.com/collection/2311167"],
  "maxResults": 200
}
```

#### Creator Shop

```json
{
  "mode": "shop",
  "creatorUrls": ["lemonyarn"],
  "maxResults": 100
}
```

#### Product details

```json
{
  "mode": "productDetails",
  "productIds": [
    "3957",
    "https://www.patreon.com/lemonyarn/shop/fruity-animals-set-of-12-phone-3957"
  ]
}
```

#### Incremental creator-post export

Use the `nextAfterPostIds` object from the previous run's `RUN_SUMMARY` as `afterPostIds`:

```json
{
  "mode": "posts",
  "creatorUrls": ["jackdanreact"],
  "maxResults": 500,
  "dateFrom": "2026-01-01T00:00:00Z",
  "afterPostIds": {
    "jackdanreact": 139651206
  },
  "postAccess": "public",
  "minLikes": 10,
  "maxConcurrency": 5
}
```

### Complete output examples

Every record has a fixed top-level field set for its `recordType`. Optional source values are returned as `null`, `{}`, or `[]`; fields are not silently omitted. The single **Results** view exposes every documented field. Failed-input diagnostics remain in `RUN_SUMMARY` and do not pollute exports.

#### Complete `creator` output - 59 top-level fields

```json
{
  "recordType": "creator",
  "sourceMode": "creator",
  "sourceInput": "jackdanreact",
  "sourceUrl": "https://www.patreon.com/cw/jackdanreact",
  "sourceRank": null,
  "creatorId": "12196794",
  "creatorUserId": "111222333",
  "vanity": "jackdanreact",
  "url": "https://www.patreon.com/jackdanreact",
  "currentUserUrl": "https://www.patreon.com/cw/jackdanreact",
  "name": "Jack & Dan React",
  "creatorName": "Jack & Dan React",
  "creationName": "Reaction videos",
  "summary": "Videos and community posts from Jack & Dan.",
  "avatarPhotoUrl": "https://c10.patreonusercontent.com/avatar.jpg",
  "avatarPhotoImageUrls": {
    "original": "https://c10.patreonusercontent.com/avatar-original.jpg",
    "default": "https://c10.patreonusercontent.com/avatar-default.jpg",
    "default_small": "https://c10.patreonusercontent.com/avatar-small.jpg",
    "default_large": "https://c10.patreonusercontent.com/avatar-large.jpg",
    "default_blurred": "https://c10.patreonusercontent.com/avatar-blurred.jpg",
    "default_blurred_small": "https://c10.patreonusercontent.com/avatar-blurred-small.jpg",
    "thumbnail": "https://c10.patreonusercontent.com/avatar-thumbnail.jpg",
    "thumbnail_large": "https://c10.patreonusercontent.com/avatar-thumbnail-large.jpg",
    "thumbnail_small": "https://c10.patreonusercontent.com/avatar-thumbnail-small.jpg"
  },
  "coverPhotoUrl": "https://c10.patreonusercontent.com/cover-original.jpg",
  "coverPhotoImageUrls": {
    "original": "https://c10.patreonusercontent.com/cover-original.jpg",
    "default": "https://c10.patreonusercontent.com/cover-default.jpg",
    "default_small": "https://c10.patreonusercontent.com/cover-small.jpg",
    "default_large": "https://c10.patreonusercontent.com/cover-large.jpg",
    "default_blurred": "https://c10.patreonusercontent.com/cover-blurred.jpg",
    "default_blurred_small": "https://c10.patreonusercontent.com/cover-blurred-small.jpg",
    "thumbnail": "https://c10.patreonusercontent.com/cover-thumbnail.jpg",
    "thumbnail_large": "https://c10.patreonusercontent.com/cover-thumbnail-large.jpg",
    "thumbnail_small": "https://c10.patreonusercontent.com/cover-thumbnail-small.jpg"
  },
  "thumbUrl": null,
  "primaryThemeColor": "#0f0f0f",
  "currency": "USD",
  "pledgeSumCurrency": "USD",
  "patronCount": 18542,
  "paidMemberCount": 6056,
  "creationCount": 581,
  "pledgeSum": null,
  "postStatistics": {
    "total": 581
  },
  "memberCountPreference": "TOTAL",
  "payPerName": "month",
  "publishedAt": "2024-06-02T12:21:10Z",
  "isNsfw": false,
  "isMonthly": true,
  "isAnniversaryBilling": true,
  "creatorWorldEnabled": true,
  "digitalCommerceEnabled": true,
  "offersFreeMembership": true,
  "offersPaidMembership": true,
  "showEarnings": false,
  "showPatronCount": true,
  "hasPublicRss": false,
  "hasRss": true,
  "hasSpotifyRss": false,
  "spotifyUri": null,
  "shouldDisplayChatTab": true,
  "tiers": [
    {
      "id": "10001",
      "title": "Supporter",
      "description": "Access to member posts.",
      "amountCents": 500,
      "currency": "USD",
      "isFreeTier": false,
      "published": true,
      "publishedAt": "2024-06-02T12:30:00Z",
      "remaining": null,
      "userLimit": null,
      "requiresShipping": false,
      "imageUrl": "https://c10.patreonusercontent.com/tier.png",
      "url": "https://www.patreon.com/checkout/jackdanreact?rid=10001",
      "postCount": 100,
      "cadenceOptions": [
        {
          "id": "10001_1_USD_",
          "amountCents": 500,
          "cadenceMonths": 1,
          "currency": "USD",
          "discountId": null,
          "discountedPrice": null
        }
      ],
      "benefitIds": ["20001"]
    }
  ],
  "benefits": [
    {
      "id": "20001",
      "title": "Archive access",
      "description": "Browse the full member archive.",
      "categoryType": "exclusive_content",
      "itemType": "custom",
      "content": null,
      "currency": "USD",
      "requiresShipping": false,
      "isPublished": true,
      "isEnded": false,
      "isDeleted": false,
      "rewardsCount": 1
    }
  ],
  "socialLinks": [
    {
      "id": "youtube-1",
      "appName": "youtube",
      "displayName": "Jack & Dan React",
      "profileId": "channel-id",
      "url": "https://www.youtube.com/@jackdanreact",
      "isPublic": true
    }
  ],
  "navigationTabs": [
    {
      "id": "tab-posts",
      "name": "Posts",
      "label": "posts",
      "itemType": "internal_tab",
      "url": "https://www.patreon.com/cw/jackdanreact/posts",
      "skipInterstitial": true
    }
  ],
  "tierCount": 1,
  "paidTierCount": 1,
  "minimumTierPrice": 5.0,
  "maximumTierPrice": 5.0,
  "averageTierPrice": 5.0,
  "tierPriceCurrency": "USD",
  "estimatedMonthlyRevenueMin": 30280.0,
  "estimatedMonthlyRevenueMax": 30280.0,
  "estimatedRevenueMethod": "paidMemberCount multiplied by minimum and maximum public paid tier prices; excludes discounts, annual billing, free members, fees, taxes, and member distribution",
  "detailsEnriched": true,
  "scrapedAt": "2026-08-08T12:00:00Z"
}
```

#### Complete `post` output - 70 top-level fields

```json
{
  "recordType": "post",
  "sourceMode": "postDetails",
  "sourceInput": "139651206",
  "sourceUrl": "https://www.patreon.com/posts/where-should-we-139651206",
  "sourceRank": null,
  "postId": "139651206",
  "campaignId": "2435558",
  "creatorName": "Decolonizing Fitness",
  "campaignUrl": "https://www.patreon.com/DecolonizingFitness",
  "title": "Where Should We Communicate About the Course?",
  "url": "https://www.patreon.com/posts/where-should-we-139651206",
  "patreonUrl": "https://www.patreon.com/posts/where-should-we-139651206",
  "postType": "poll",
  "content": "Choose the place where course discussions should continue.",
  "contentHtml": "<p>Choose the place where course discussions should continue.</p>",
  "contentJson": {
    "type": "doc",
    "content": [
      {
        "type": "paragraph",
        "content": [
          {
            "type": "text",
            "text": "Choose the place where course discussions should continue."
          }
        ]
      }
    ]
  },
  "teaserText": "Choose the discussion platform.",
  "teaserTextJson": {
    "type": "doc",
    "content": [
      {
        "type": "paragraph",
        "content": [
          {
            "type": "text",
            "text": "Choose the discussion platform."
          }
        ]
      }
    ]
  },
  "cleanedTeaserText": "Choose the discussion platform.",
  "contentTeaserText": "Choose the discussion platform.",
  "createdAt": "2025-09-01T10:00:00Z",
  "publishedAt": "2025-09-01T10:05:00Z",
  "editedAt": "2025-09-01T11:00:00Z",
  "deletedAt": null,
  "scheduledFor": null,
  "changeVisibilityAt": null,
  "currentUserCanView": true,
  "currentUserCanComment": true,
  "currentUserCommentDisallowedReason": null,
  "isLocked": false,
  "isPaid": false,
  "minCentsPledgedToView": 0,
  "pledgeUrl": "https://www.patreon.com/checkout/DecolonizingFitness",
  "upgradeUrl": null,
  "paywallDisplay": "post_layout",
  "accessRules": [
    {
      "id": "access-1",
      "type": "public",
      "amountCents": 0,
      "currency": "USD",
      "postCount": 1,
      "tierId": "-1"
    }
  ],
  "unlockOptions": [
    {
      "id": "unlock-1",
      "type": "reward",
      "isCurrentUserEligible": false,
      "rewardBenefitCategories": ["exclusive_content"],
      "rewardId": "4337418",
      "productId": null
    }
  ],
  "commentCount": 3,
  "commenterCount": 3,
  "likeCount": 12,
  "reshareCount": 1,
  "viewCount": 120,
  "authors": [
    {
      "id": "14472882",
      "name": "Decolonizing Fitness",
      "url": "https://www.patreon.com/DecolonizingFitness",
      "imageUrl": "https://c10.patreonusercontent.com/author.jpg",
      "communityProfileId": "profile-14472882"
    }
  ],
  "media": [
    {
      "id": "563261175",
      "type": "media",
      "mediaType": "image",
      "fileName": "course.jpg",
      "mimeType": "image/jpeg",
      "sizeBytes": 245760,
      "state": "ready",
      "downloadUrl": "https://c10.patreonusercontent.com/course.jpg",
      "imageUrls": {
        "original": "https://c10.patreonusercontent.com/course-original.jpg",
        "default": "https://c10.patreonusercontent.com/course-default.jpg"
      },
      "display": {
        "width": 1200,
        "height": 800
      },
      "metadata": {
        "dimensions": {
          "width": 1200,
          "height": 800
        }
      },
      "createdAt": "2025-09-01T09:59:00Z",
      "ownerId": "139651206",
      "ownerType": "post",
      "ownerRelationship": "images"
    }
  ],
  "primaryImage": {
    "id": "primary-139651206",
    "type": "post",
    "iconUrl": "https://c10.patreonusercontent.com/icon.jpg",
    "smallUrl": "https://c10.patreonusercontent.com/small.jpg",
    "mediumUrl": "https://c10.patreonusercontent.com/medium.jpg",
    "largeUrl": "https://c10.patreonusercontent.com/large.jpg",
    "altText": "Course discussion illustration",
    "colors": {
      "dominant": "#595c5f"
    },
    "isFallback": false,
    "preferAlternateDisplay": false
  },
  "image": {
    "url": "https://c10.patreonusercontent.com/image.jpg",
    "largeUrl": "https://c10.patreonusercontent.com/image-large.jpg",
    "thumbUrl": "https://c10.patreonusercontent.com/image-thumb.jpg",
    "thumbSquareUrl": "https://c10.patreonusercontent.com/image-square.jpg",
    "thumbSquareLargeUrl": "https://c10.patreonusercontent.com/image-square-large.jpg",
    "originalUrl": null,
    "defaultUrl": null,
    "defaultSmallUrl": null,
    "defaultLargeUrl": null,
    "thumbnailUrl": null,
    "thumbnailSmallUrl": null,
    "thumbnailLargeUrl": null,
    "width": 1200,
    "height": 800
  },
  "thumbnail": {
    "url": "https://c10.patreonusercontent.com/thumbnail.jpg",
    "largeUrl": null,
    "thumbUrl": null,
    "thumbSquareUrl": null,
    "thumbSquareLargeUrl": null,
    "originalUrl": "https://c10.patreonusercontent.com/thumbnail-original.jpg",
    "defaultUrl": "https://c10.patreonusercontent.com/thumbnail-default.jpg",
    "defaultSmallUrl": "https://c10.patreonusercontent.com/thumbnail-small.jpg",
    "defaultLargeUrl": "https://c10.patreonusercontent.com/thumbnail-large.jpg",
    "thumbnailUrl": "https://c10.patreonusercontent.com/thumbnail-square.jpg",
    "thumbnailSmallUrl": "https://c10.patreonusercontent.com/thumbnail-square-small.jpg",
    "thumbnailLargeUrl": "https://c10.patreonusercontent.com/thumbnail-square-large.jpg",
    "width": 1200,
    "height": 800
  },
  "thumbnailUrl": "https://c10.patreonusercontent.com/thumbnail.jpg",
  "metaImageUrl": "https://c10.patreonusercontent.com/meta.jpg",
  "shareImages": {
    "landscape": "https://www.patreon.com/ig/card-teaser-image/post/139651206/landscape.png",
    "portrait": "https://www.patreon.com/ig/card-teaser-image/post/139651206/portrait.png",
    "square": "https://www.patreon.com/ig/card-teaser-image/post/139651206/square.png"
  },
  "embed": {
    "url": "https://example.com/video",
    "provider": "YouTube",
    "providerUrl": "https://www.youtube.com",
    "subject": "Course update",
    "description": "A public course update.",
    "html": "<iframe src=\"https://www.youtube.com/embed/video-id\"></iframe>",
    "thumbnailUrl": "https://i.ytimg.com/vi/video-id/hqdefault.jpg",
    "type": "video",
    "linkedObjectId": null,
    "linkedObjectType": null,
    "productVariantId": null
  },
  "videoPreview": {
    "url": "https://c10.patreonusercontent.com/preview.mp4",
    "duration": 30,
    "thumbnailUrl": "https://c10.patreonusercontent.com/preview.jpg",
    "mimeType": "video/mp4"
  },
  "postFile": {
    "default_thumbnail": "https://c10.patreonusercontent.com/file-thumb.jpg",
    "duration": 300,
    "full_content_duration": 300,
    "height": 1080,
    "image_colors": {
      "dominant": "#222222"
    },
    "media_id": "563261175",
    "progress": 1,
    "state": "ready",
    "url": "https://c10.patreonusercontent.com/file.mp4",
    "width": 1920
  },
  "postMetadata": {
    "platform": {},
    "image_order": ["563261175"]
  },
  "attachmentsPreviewMetadata": [],
  "poll": {
    "id": "poll-139651206",
    "question": "Where should we communicate?",
    "questionType": "single_choice",
    "createdAt": "2025-09-01T10:00:00Z",
    "closesAt": null,
    "numResponses": 42,
    "choices": [
      {
        "id": "choice-1",
        "text": "Patreon comments",
        "choiceType": "text",
        "position": 0,
        "numResponses": 25
      }
    ]
  },
  "tags": [
    {
      "id": "tag-course",
      "type": "user_defined",
      "value": "course"
    }
  ],
  "collections": [
    {
      "id": "1986892",
      "type": "collection",
      "title": "Course updates",
      "url": "https://www.patreon.com/collection/1986892"
    }
  ],
  "hasCustomThumbnail": true,
  "isPreviewBlurred": false,
  "isNewToCurrentUser": false,
  "isFanGiftable": true,
  "isHeaderMediaFree": true,
  "wasPostedByCampaignOwner": true,
  "moderationStatus": "none",
  "hasTrustAndSafetyViolation": false,
  "liveChatReplayStatus": null,
  "previewAssetType": "image",
  "detailsEnriched": true,
  "scrapedAt": "2026-08-08T12:00:00Z"
}
```

#### Complete `comment` output - 29 top-level fields

```json
{
  "recordType": "comment",
  "sourceMode": "comments",
  "sourceInput": "163588644",
  "sourceUrl": "https://www.patreon.com/posts/163588644",
  "sourceRank": 1,
  "commentId": "218253776",
  "conversationId": "ci_218253776_th",
  "postId": "163588644",
  "postTitle": "A public Patreon post",
  "parentCommentId": null,
  "isReply": false,
  "body": "Thanks for sharing this update!",
  "createdAt": "2026-07-20T14:12:00Z",
  "deletedAt": null,
  "voteSum": 8,
  "currentUserVote": null,
  "replyCount": 2,
  "isLikedByCreator": true,
  "isRepliedToByCreator": true,
  "visibilityState": "visible",
  "moderationStatus": "none",
  "style": "default",
  "itemType": "comment",
  "fallbackRepresentation": null,
  "author": {
    "id": "501",
    "fullName": "Loz",
    "imageUrl": "https://c10.patreonusercontent.com/commenter.jpg",
    "url": "https://www.patreon.com/user?u=501"
  },
  "authorIdentity": {
    "id": "identity-501",
    "name": "Loz",
    "url": "https://www.patreon.com/user?u=501",
    "avatarUrl": "https://c10.patreonusercontent.com/commenter-avatar.jpg",
    "badges": ["PATRON"]
  },
  "media": [
    {
      "id": "comment-media-1",
      "type": "media",
      "mediaType": "image",
      "fileName": "reaction.jpg",
      "mimeType": "image/jpeg",
      "sizeBytes": 102400,
      "state": "ready",
      "downloadUrl": "https://c10.patreonusercontent.com/reaction.jpg",
      "imageUrls": {
        "original": "https://c10.patreonusercontent.com/reaction-original.jpg",
        "default": "https://c10.patreonusercontent.com/reaction-default.jpg"
      },
      "display": {
        "width": 800,
        "height": 600
      },
      "metadata": {
        "dimensions": {
          "width": 800,
          "height": 600
        }
      },
      "createdAt": "2026-07-20T14:11:50Z",
      "ownerId": "218253776",
      "ownerType": "comment",
      "ownerRelationship": "media"
    }
  ],
  "commentSort": "top",
  "scrapedAt": "2026-08-08T12:00:00Z"
}
```

Reply rows use the same 29 fields. For a reply, `isReply` is `true`, `parentCommentId` contains the parent comment ID, and `conversationId` identifies the public thread.

#### Complete `collection` output - 27 top-level fields

```json
{
  "recordType": "collection",
  "sourceMode": "collections",
  "sourceInput": "alexhefner",
  "sourceUrl": "https://www.patreon.com/cw/alexhefner/collections",
  "sourceRank": 1,
  "collectionId": "1986892",
  "title": "Attack on Titan Collection",
  "url": "https://www.patreon.com/collection/1986892",
  "description": "Reaction posts organized into one collection.",
  "collectionType": "DEFAULT",
  "layout": "grid",
  "createdAt": "2026-02-05T19:25:48Z",
  "editedAt": "2026-07-09T09:30:21Z",
  "moderationStatus": "none",
  "postSortType": "custom",
  "numPosts": 96,
  "numLockedPosts": 95,
  "numDraftPosts": 0,
  "numScheduledPosts": 47,
  "numVisiblePosts": 96,
  "postIds": ["163323681", "163323677"],
  "currentUserAccessContext": null,
  "thumbnail": {
    "url": "https://c10.patreonusercontent.com/collection.jpg",
    "largeUrl": null,
    "thumbUrl": null,
    "thumbSquareUrl": null,
    "thumbSquareLargeUrl": null,
    "originalUrl": "https://c10.patreonusercontent.com/collection-original.jpg",
    "defaultUrl": "https://c10.patreonusercontent.com/collection-default.jpg",
    "defaultSmallUrl": "https://c10.patreonusercontent.com/collection-small.jpg",
    "defaultLargeUrl": "https://c10.patreonusercontent.com/collection-large.jpg",
    "thumbnailUrl": "https://c10.patreonusercontent.com/collection-square.jpg",
    "thumbnailSmallUrl": "https://c10.patreonusercontent.com/collection-square-small.jpg",
    "thumbnailLargeUrl": "https://c10.patreonusercontent.com/collection-square-large.jpg",
    "width": 1024,
    "height": 1024
  },
  "shareImages": {
    "landscape": "https://www.patreon.com/ig/card-teaser-image/collection/1986892/landscape.png",
    "portrait": "https://www.patreon.com/ig/card-teaser-image/collection/1986892/portrait.png"
  },
  "coverMedia": {
    "id": "609712735",
    "type": "media",
    "mediaType": "image",
    "fileName": "cover.jpg",
    "mimeType": "image/jpeg",
    "sizeBytes": 321000,
    "state": "ready",
    "downloadUrl": "https://c10.patreonusercontent.com/collection-cover.jpg",
    "imageUrls": {
      "original": "https://c10.patreonusercontent.com/collection-cover-original.jpg",
      "default": "https://c10.patreonusercontent.com/collection-cover-default.jpg"
    },
    "display": {
      "width": 1024,
      "height": 1024
    },
    "metadata": {
      "dimensions": {
        "width": 1024,
        "height": 1024
      }
    },
    "createdAt": "2026-02-05T19:20:00Z",
    "ownerId": "1986892",
    "ownerType": "collection",
    "ownerRelationship": "cover_media"
  },
  "unlockOptions": [
    {
      "id": "collection-unlock-1",
      "type": "product_variant",
      "isCurrentUserEligible": false,
      "rewardBenefitCategories": [],
      "rewardId": null,
      "productId": "2106333"
    }
  ],
  "scrapedAt": "2026-08-08T12:00:00Z"
}
```

#### Complete `product` output - 31 top-level fields

```json
{
  "recordType": "product",
  "sourceMode": "productDetails",
  "sourceInput": "3957",
  "sourceUrl": "https://www.patreon.com/lemonyarn/shop/fruity-animals-set-of-12-phone-3957",
  "sourceRank": null,
  "productId": "3957",
  "campaignId": "4375583",
  "name": "Fruity Animals | Set of 12 Phone Wallpapers",
  "url": "https://www.patreon.com/lemonyarn/shop/fruity-animals-set-of-12-phone-3957",
  "checkoutUrl": "https://www.patreon.com/checkout/lemonyarn?pvid=3957",
  "shareUrl": "https://www.patreon.com/ig/card-teaser-image/product/3957.png",
  "contentType": "digital_commerce",
  "description": "A downloadable set of twelve phone wallpapers.",
  "descriptionHtml": "<p>A downloadable set of twelve phone wallpapers.</p>",
  "priceCents": 400,
  "price": 4.0,
  "currency": "USD",
  "isFeatured": false,
  "isHidden": false,
  "moderationStatus": null,
  "publishedAt": "2023-06-15T10:00:00Z",
  "ordersCount": null,
  "accessMetadata": [],
  "liveSaleDiscount": null,
  "previewMedia": [
    {
      "id": "product-preview-1",
      "type": "media",
      "mediaType": "image",
      "fileName": "preview.jpg",
      "mimeType": "image/jpeg",
      "sizeBytes": 150000,
      "state": "ready",
      "downloadUrl": "https://c10.patreonusercontent.com/product-preview.jpg",
      "imageUrls": {
        "original": "https://c10.patreonusercontent.com/product-preview-original.jpg",
        "default": "https://c10.patreonusercontent.com/product-preview-default.jpg"
      },
      "display": {
        "width": 1080,
        "height": 1080
      },
      "metadata": {
        "dimensions": {
          "width": 1080,
          "height": 1080
        }
      },
      "createdAt": "2023-06-15T09:55:00Z",
      "ownerId": "3957",
      "ownerType": "product-variant",
      "ownerRelationship": "preview_media"
    }
  ],
  "contentMedia": [
    {
      "id": "product-content-1",
      "type": "media",
      "mediaType": "image",
      "fileName": "wallpaper.jpg",
      "mimeType": "image/jpeg",
      "sizeBytes": 500000,
      "state": "ready",
      "downloadUrl": "https://c10.patreonusercontent.com/wallpaper.jpg",
      "imageUrls": {
        "original": "https://c10.patreonusercontent.com/wallpaper-original.jpg",
        "default": "https://c10.patreonusercontent.com/wallpaper-default.jpg"
      },
      "display": {
        "width": 1440,
        "height": 2560
      },
      "metadata": {
        "dimensions": {
          "width": 1440,
          "height": 2560
        }
      },
      "createdAt": "2023-06-15T09:56:00Z",
      "ownerId": "3957",
      "ownerType": "product-variant",
      "ownerRelationship": "content_media"
    }
  ],
  "attachmentMedia": [
    {
      "id": "product-attachment-1",
      "type": "media",
      "mediaType": "file",
      "fileName": "wallpapers.zip",
      "mimeType": "application/zip",
      "sizeBytes": 24000000,
      "state": "ready",
      "downloadUrl": null,
      "imageUrls": {},
      "display": {},
      "metadata": {},
      "createdAt": "2023-06-15T09:57:00Z",
      "ownerId": "3957",
      "ownerType": "product-variant",
      "ownerRelationship": "attachment_media"
    }
  ],
  "linkedPost": {
    "id": "120000001",
    "type": "post",
    "title": "Wallpaper pack",
    "url": "https://www.patreon.com/posts/wallpaper-pack-120000001"
  },
  "linkedCollection": {
    "id": "500001",
    "type": "collection",
    "title": "Wallpaper products",
    "url": "https://www.patreon.com/collection/500001"
  },
  "detailsEnriched": true,
  "scrapedAt": "2026-08-08T12:00:00Z"
}
```

### What data can you extract?

| Record | Complete top-level field inventory |
| --- | --- |
| Creator | `recordType`, `sourceMode`, `sourceInput`, `sourceUrl`, `sourceRank`, `creatorId`, `creatorUserId`, `vanity`, `url`, `currentUserUrl`, `name`, `creatorName`, `creationName`, `summary`, `avatarPhotoUrl`, `avatarPhotoImageUrls`, `coverPhotoUrl`, `coverPhotoImageUrls`, `thumbUrl`, `primaryThemeColor`, `currency`, `pledgeSumCurrency`, `patronCount`, `paidMemberCount`, `creationCount`, `pledgeSum`, `postStatistics`, `memberCountPreference`, `payPerName`, `publishedAt`, `isNsfw`, `isMonthly`, `isAnniversaryBilling`, `creatorWorldEnabled`, `digitalCommerceEnabled`, `offersFreeMembership`, `offersPaidMembership`, `showEarnings`, `showPatronCount`, `hasPublicRss`, `hasRss`, `hasSpotifyRss`, `spotifyUri`, `shouldDisplayChatTab`, `tiers`, `benefits`, `socialLinks`, `navigationTabs`, `tierCount`, `paidTierCount`, `minimumTierPrice`, `maximumTierPrice`, `averageTierPrice`, `tierPriceCurrency`, `estimatedMonthlyRevenueMin`, `estimatedMonthlyRevenueMax`, `estimatedRevenueMethod`, `detailsEnriched`, `scrapedAt` |
| Post | `recordType`, `sourceMode`, `sourceInput`, `sourceUrl`, `sourceRank`, `postId`, `campaignId`, `creatorName`, `campaignUrl`, `title`, `url`, `patreonUrl`, `postType`, `content`, `contentHtml`, `contentJson`, `teaserText`, `teaserTextJson`, `cleanedTeaserText`, `contentTeaserText`, `createdAt`, `publishedAt`, `editedAt`, `deletedAt`, `scheduledFor`, `changeVisibilityAt`, `currentUserCanView`, `currentUserCanComment`, `currentUserCommentDisallowedReason`, `isLocked`, `isPaid`, `minCentsPledgedToView`, `pledgeUrl`, `upgradeUrl`, `paywallDisplay`, `accessRules`, `unlockOptions`, `commentCount`, `commenterCount`, `likeCount`, `reshareCount`, `viewCount`, `authors`, `media`, `primaryImage`, `image`, `thumbnail`, `thumbnailUrl`, `metaImageUrl`, `shareImages`, `embed`, `videoPreview`, `postFile`, `postMetadata`, `attachmentsPreviewMetadata`, `poll`, `tags`, `collections`, `hasCustomThumbnail`, `isPreviewBlurred`, `isNewToCurrentUser`, `isFanGiftable`, `isHeaderMediaFree`, `wasPostedByCampaignOwner`, `moderationStatus`, `hasTrustAndSafetyViolation`, `liveChatReplayStatus`, `previewAssetType`, `detailsEnriched`, `scrapedAt` |
| Comment | `recordType`, `sourceMode`, `sourceInput`, `sourceUrl`, `sourceRank`, `commentId`, `conversationId`, `postId`, `postTitle`, `parentCommentId`, `isReply`, `body`, `createdAt`, `deletedAt`, `voteSum`, `currentUserVote`, `replyCount`, `isLikedByCreator`, `isRepliedToByCreator`, `visibilityState`, `moderationStatus`, `style`, `itemType`, `fallbackRepresentation`, `author`, `authorIdentity`, `media`, `commentSort`, `scrapedAt` |
| Collection | `recordType`, `sourceMode`, `sourceInput`, `sourceUrl`, `sourceRank`, `collectionId`, `title`, `url`, `description`, `collectionType`, `layout`, `createdAt`, `editedAt`, `moderationStatus`, `postSortType`, `numPosts`, `numLockedPosts`, `numDraftPosts`, `numScheduledPosts`, `numVisiblePosts`, `postIds`, `currentUserAccessContext`, `thumbnail`, `shareImages`, `coverMedia`, `unlockOptions`, `scrapedAt` |
| Product | `recordType`, `sourceMode`, `sourceInput`, `sourceUrl`, `sourceRank`, `productId`, `campaignId`, `name`, `url`, `checkoutUrl`, `shareUrl`, `contentType`, `description`, `descriptionHtml`, `priceCents`, `price`, `currency`, `isFeatured`, `isHidden`, `moderationStatus`, `publishedAt`, `ordersCount`, `accessMetadata`, `liveSaleDiscount`, `previewMedia`, `contentMedia`, `attachmentMedia`, `linkedPost`, `linkedCollection`, `detailsEnriched`, `scrapedAt` |
Nested objects are also normalized. Tier rows include identifiers, prices, availability, cadence options, and benefit IDs. Media objects include file metadata, download and image URLs, dimensions, ownership, and state. Polls contain complete choice objects. Comment identities include public name, link, avatar, and badges.

### Input parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `mode` | string | Yes | `search` | `search`, `creator`, `posts`, `postDetails`, `comments`, `collections`, `collectionPosts`, `shop`, or `productDetails` |
| `searchTerms` | string\[] | In search mode | `["digital artist"]` | Up to 100 keywords processed separately |
| `creatorUrls` | string\[] | In creator/posts/collections/shop | Example creator URL | Up to 100 creator URLs, vanity names, or numeric campaign IDs |
| `postIds` | string\[] | In postDetails/comments | Example post ID | Up to 100 numeric post IDs or public post URLs |
| `collectionIds` | string\[] | In collectionPosts | Example collection ID | Up to 100 numeric collection IDs or `/collection/ID` URLs |
| `productIds` | string\[] | In productDetails | Example product ID | Up to 100 numeric product IDs or public Shop product URLs |
| `maxResults` | integer | No | `50` | 1-5,000 rows per input; comments and replies share the limit |
| `includeDetails` | boolean | No | `false` | Enrich every search hit with full creator data |
| `includePosts` | boolean | No | `false` | Add up to `maxResults` posts per creator in creator mode |
| `includeCollections` | boolean | No | `false` | Add up to `maxResults` collections per creator in creator mode |
| `includeShop` | boolean | No | `false` | Add up to `maxResults` products per creator in creator mode |
| `includeComments` | boolean | No | `false` | Add comments after post rows in postDetails mode |
| `maxComments` | integer | No | `100` | 1-5,000 comment and reply rows per post when `includeComments` is enabled |
| `commentSort` | string | No | `top` | `top` uses helpful votes; `newest` uses creation time |
| `includeReplies` | boolean | No | `true` | Fetch complete public reply threads where Patreon exposes them |
| `maxConcurrency` | integer | No | `5` | Process 1-20 independent inputs concurrently |
| `dateFrom` | string | No | - | ISO 8601 lower date boundary for posts and comments |
| `dateTo` | string | No | - | ISO 8601 upper date boundary for posts and comments |
| `afterPostId` | integer | No | - | Global post checkpoint; only greater numeric IDs are emitted |
| `afterPostIds` | object | No | `{}` | Per-creator or per-collection checkpoints returned by `RUN_SUMMARY` |
| `postAccess` | string | No | `all` | `all`, `public`, `paid`, or `locked` |
| `postTypes` | string\[] | No | `[]` | Optional exact Patreon post types; empty means all |
| `minLikes` | integer | No | `0` | Minimum likes required for post rows |
| `minComments` | integer | No | `0` | Minimum comments required for post rows |
| `includeNsfw` | boolean | No | `true` | Include creator search rows explicitly marked NSFW |

### Use cases

#### Creator and membership intelligence

Compare publicly visible member counts, paid-member counts, tier pricing, benefits, publishing volume, and social presence across a creator segment.

#### Content and engagement research

Export posts, publishing timestamps, formats, likes, comments, helpful votes, creator likes, creator replies, polls, and public media metadata for analysis in a spreadsheet or warehouse.

#### Digital-product monitoring

Schedule `shop` runs to track public product names, prices, descriptions, featured status, media, and new product publication dates.

#### Public archive construction

Combine `collections`, `collectionPosts`, and `postDetails` to build an ordered, machine-readable catalog of publicly exposed creator work. Locked rows retain titles, teasers, access rules, and paywall metadata but never expose restricted content.

#### Recurring creator monitoring

Use Apify schedules and webhooks to run searches or creator exports periodically, then compare dataset snapshots in Make, Zapier, n8n, Google Sheets, or a data warehouse.

### Performance and cost

The Actor uses pay-per-event billing, with a separate event for each stored search result, creator detail, post, comment, collection, or product. The exact prices are shown on the Apify **Pricing** tab. Platform usage depends primarily on request count, proxy traffic, and run duration.

| Workload | Main request drivers | Expected relative usage |
| --- | --- | --- |
| Search without enrichment | Search result pages | Lowest |
| Search with `includeDetails` | Search pages plus one creator workflow per hit | Higher |
| Creator/posts/collections/shop | Number of inputs and paginated result pages | Proportional to requested rows |
| Comments with replies | Top-level comment pages plus reply-thread pages | Higher for active posts |
| Creator with all include flags | Creator details plus three paginated related resources | Highest per creator |

Inputs run concurrently up to `maxConcurrency`, while list pages are parsed and stored incrementally. If an Apify event charge limit is reached, the Actor stops cleanly and records the condition in `RUN_SUMMARY`. No fixed speed or success rate is claimed before repeatable production measurements are available.

### API usage

Replace `YOUR_USERNAME` with the publisher username after the Actor is published:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_USERNAME~patreon-scraper/runs?token=APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "posts",
    "creatorUrls": ["jackdanreact"],
    "maxResults": 50
  }'
```

Dataset results can be connected to Google Sheets, Make, Zapier, n8n, Airbyte, webhooks, MCP workflows, object storage, or a data warehouse.

### Best for / not for

**Best for:** public creator discovery, membership and pricing research, public post archives, comment analysis, collection exports, and Patreon Shop monitoring.

**Not for:** logging into Patreon, accessing member-only content, bypassing paywalls, private messages, private community data, purchases, file downloading, or real-time chat streaming.

### Limits and good to know

- One primary mode runs at a time; `creator` and `postDetails` provide documented include options.
- List limits apply separately to each input, not globally across the run.
- A maximum of 100 search terms or resource inputs and 5,000 results per input is accepted.
- The Actor extracts only information Patreon returns publicly without authentication.
- Locked posts produce normal post rows with `isLocked: true`; restricted body and member media remain `null` or empty.
- Deleted, private, unavailable, and invalid resources are recorded in logs and `RUN_SUMMARY`; they never appear as business-data rows.
- Retryable failures use exponential backoff and a rotated proxy session. One failed input does not discard successful inputs.
- `RUN_SUMMARY` contains saved-row counts by billing event, failure categories, up to 100 failed-input diagnostics, charge-limit status, and `nextAfterPostIds` checkpoints.
- Every network request requires the built-in Apify Residential Proxy. There is no user-facing proxy field and no direct-traffic fallback.
- Patreon controls public availability, response fields, pagination, and rate limits; source-side changes can affect results.

### Frequently asked questions

#### What creator input should I provide?

Use a public creator URL such as `https://www.patreon.com/cw/jackdanreact`, the vanity name `jackdanreact`, or the numeric campaign ID `12196794`.

#### How many results can I extract?

Set `maxResults` from 1 to 5,000. It applies separately to each input. The actual number can be smaller when Patreon exposes fewer public results.

#### Why are some post fields empty?

Post formats expose different properties, and creators do not always provide thumbnails, attachments, polls, embeds, or public engagement metrics. Member-only bodies and media are intentionally unavailable without authorization.

#### Are replies included in the comments limit?

Yes. With `includeReplies: true`, both top-level comments and replies count toward the per-post `maxResults` or `maxComments` limit.

#### Can I process multiple creators or posts?

Yes. Supply up to 100 values in the relevant input array. Each is processed independently, and its limit is applied independently.

#### Can I schedule recurring runs?

Yes. Use Apify schedules for recurring jobs and webhooks to notify another system when a run completes.

#### Do I need a Patreon account, API key, or proxy?

No Patreon account or API key is required. The Actor automatically creates and enforces its Apify Residential Proxy configuration; users do not configure it in the input.

### Responsible use

This Actor extracts publicly available information. Users are responsible for complying with applicable laws, privacy regulations, contractual obligations, and Patreon's terms. Do not use the Actor to harass creators, profile sensitive individuals, republish copyrighted content without permission, or attempt to circumvent access controls.

Patreon is a trademark of Patreon, Inc. This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Patreon, Inc.

### Support

If a Patreon layout or API response changes, create an issue in the Actor's **Issues** tab. Include the run ID, relevant non-sensitive input, selected mode, and the result you expected. Do not include account cookies, access tokens, payment data, or private content.

# Actor input Schema

## `mode` (type: `string`):

Choose the Patreon resource or workflow to scrape.

## `searchTerms` (type: `array`):

Keywords processed separately in search mode.

## `creatorUrls` (type: `array`):

Public creator URLs such as https://www.patreon.com/cw/creator, vanity names, or numeric campaign IDs for creator, posts, collections, and shop modes.

## `postIds` (type: `array`):

Numeric Patreon post IDs or public post URLs for postDetails and comments modes.

## `collectionIds` (type: `array`):

Numeric collection IDs or https://www.patreon.com/collection/ID URLs for collectionPosts mode.

## `productIds` (type: `array`):

Numeric Patreon Shop product IDs or public /shop/product-name-ID URLs for productDetails mode.

## `maxResults` (type: `integer`):

Maximum rows per search term, creator, post, collection, or shop input. In comments mode, replies count toward this limit.

## `includeDetails` (type: `boolean`):

Fetch the full public creator page and metrics for every search result.

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

Also emit up to maxResults post rows for every creator in creator mode.

## `includeCollections` (type: `boolean`):

Also emit up to maxResults collection rows for every creator in creator mode.

## `includeShop` (type: `boolean`):

Also emit up to maxResults Shop product rows for every creator in creator mode.

## `includeComments` (type: `boolean`):

Also emit comment rows after each postDetails row.

## `maxComments` (type: `integer`):

Maximum comment and reply rows per post when includeComments is enabled in postDetails mode.

## `commentSort` (type: `string`):

Sort top-level comments by helpful votes or creation time. Replies remain chronological.

## `includeReplies` (type: `boolean`):

Fetch public replies for comments that expose a reply thread.

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

Maximum creator, post, collection, product, or search inputs processed in parallel.

## `dateFrom` (type: `string`):

Optional ISO 8601 date or timestamp. Only posts and comments on or after it are emitted.

## `dateTo` (type: `string`):

Optional ISO 8601 date or timestamp. Only posts and comments on or before it are emitted.

## `afterPostId` (type: `integer`):

Optional global checkpoint. Emit only numeric post IDs greater than this value.

## `afterPostIds` (type: `object`):

Optional JSON object mapping a creator or collection input to its last saved numeric post ID. RUN\_SUMMARY returns nextAfterPostIds for the next run.

## `postAccess` (type: `string`):

Filter post rows by public visibility, paid status, or locked status.

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

Optional exact Patreon post types, such as text\_only, image\_file, video\_embed, audio\_file, poll, or link. Empty means all types.

## `minLikes` (type: `integer`):

Only emit post rows with at least this many likes.

## `minComments` (type: `integer`):

Only emit post rows with at least this many comments.

## `includeNsfw` (type: `boolean`):

When false, creator rows explicitly marked NSFW are excluded from search results.

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "digital artist"
  ],
  "creatorUrls": [
    "https://www.patreon.com/cw/jackdanreact"
  ],
  "postIds": [
    "131455912"
  ],
  "collectionIds": [
    "1986892"
  ],
  "productIds": [
    "3957"
  ],
  "maxResults": 50,
  "includeDetails": false,
  "includePosts": false,
  "includeCollections": false,
  "includeShop": false,
  "includeComments": false,
  "maxComments": 100,
  "commentSort": "top",
  "includeReplies": true,
  "maxConcurrency": 5,
  "postAccess": "all",
  "postTypes": [],
  "minLikes": 0,
  "minComments": 0,
  "includeNsfw": true
}
```

# Actor output Schema

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

Normalized creator, post, comment, collection, and product rows.

## `runSummary` (type: `string`):

Run counters, failed-input diagnostics, billing-limit status, and reusable post checkpoints.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/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 '{}' |
apify call scrapingmonkey/patreon-scraper --silent --output-dataset

```

## MCP server setup

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