Patreon Scraper
Pricing
$19.99/month + usage
Patreon Scraper
Patreon Scraper extracts public creator data from Patreon pages. Collect creator names, descriptions, membership tiers, pricing, and post counts for research and analysis. Ideal for market research, creator discovery, and audience insights.
Pricing
$19.99/month + usage
Rating
0.0
(0)
Developer
Scraper Engine
Maintained by CommunityActor stats
0
Bookmarked
29
Total users
2
Monthly active users
21 hours ago
Last modified
Categories
Share
Patreon Scraper — Patrons, Tiers and Creator Earnings
Patreon Scraper pulls structured data from any public Patreon creator page — patron count, paid-member count, membership tiers with prices and Discord access, monthly earnings when the creator publishes them, and social links — and returns it as clean JSON. Feed it a profile URL, a username, or a search keyword, and it resolves the campaign the same way Patreon's own site does, with no Patreon login required. Start a run from the Apify Console or call it from the API below.
What is Patreon Scraper?
Patreon Scraper is an Apify Actor that turns a Patreon creator page into a single structured row: campaign identity, patron and member counts, membership tiers, monthly earnings, and social links. It reads only the same public HTML and JSON that Patreon's own site serves to any visitor — no Patreon account, login, or OAuth app registration required. It's built for creator-economy analysts, sponsorship and marketing teams, and AI agents that need typed campaign data instead of scraped HTML.
What Patreon campaign data is publicly available to scrape?
Everything on a creator's public Patreon page — name, patron and paid-member counts, tier prices, Discord perks, bio, and social links — is visible to any visitor without logging in. Only member-only posts and earnings the creator has chosen not to publish are gated.
| Data Category | Publicly Available | Gated behind |
|---|---|---|
| Campaign name & creator identity | Yes | — |
| Patron count & paid-member count | Yes | — |
| Membership tiers, prices, Discord access | Yes | — |
| About / bio text | Yes | — |
| Social links (Instagram, X, YouTube, etc.) | Yes | — |
| Monthly earnings | Yes, only when the creator sets earnings visibility to public | Hidden by the creator's own choice otherwise |
| Individual patron identities & pledge amounts | No | Never exposed publicly by Patreon |
| Member-only posts & content | No | Paid membership required |
Patreon Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.
What data can I extract with Patreon Scraper?
Patreon Scraper returns campaign identity, monetization metrics, membership tiers, and creator social links in a single flat JSON row per campaign.
| Field Name | Description |
|---|---|
url | Public URL of the creator's Patreon page |
id | Patreon's internal id string, formatted campaign_<campaign_id> |
campaign_id | Numeric Patreon campaign id |
username | Vanity/username portion of the URL, from the input or search result |
name | Campaign name (the page title, distinct from the creator's personal name) |
creation_name | Short tagline Patreon shows under the campaign name (e.g. "is creating videos") |
creator_name | Full name of the creator who owns the campaign |
about | Bio / description text, HTML stripped, paragraph breaks preserved |
avatar_photo_url | Creator's avatar image URL |
avatar_photo_blurred_url | Blurred variant of the avatar image |
thumb | Thumbnail-sized avatar image URL |
primary_theme_color | Campaign's accent colour as an integer (hex value converted) |
is_nsfw | Whether Patreon flags the campaign as NSFW |
patron_count | Total number of patrons/members |
total_members | Same value as patron_count (kept as a separate column for compatibility) |
paid_members | Number of paying patrons |
total_posts | Total posts published on the campaign |
post_count | Same value as total_posts (kept as a separate column) |
earnings_per_month | Monthly earnings in the campaign's currency, or null if not published |
earnings_hidden | Whether the creator has hidden earnings from public view |
earnings_currency | Currency code for earnings_per_month |
tiers | Array of paid membership tiers — each with id, name, price, description, discord_access |
socials | Array of every connected social platform — platform, url, display_name, is_public |
instagram, twitter, youtube, facebook, twitch, tiktok | Flat convenience columns pulled from socials for these six platforms |
data_source | Which Patreon endpoint the row was built from — about_json or campaign_api |
query | The search keyword this row was returned for, or direct for a URL/username input |
success | true if the campaign resolved, false if it didn't |
error | Failure reason string when success is false, otherwise null |
Campaign identity fields
url, id, campaign_id, username, name, creation_name, creator_name, about, avatar_photo_url, avatar_photo_blurred_url, thumb, primary_theme_color, is_nsfw — what the campaign is, what it's called, and how it presents itself.
Monetization and membership fields
patron_count, total_members, paid_members, total_posts, post_count, earnings_per_month, earnings_hidden, earnings_currency, tiers — the counts, prices, and revenue signals.
Social links and run metadata
socials, instagram, twitter, youtube, facebook, twitch, tiktok, data_source, query, success, error — where the creator is active elsewhere, and how the row itself was produced.
🤖 Add-on: Need additional Patreon data?
Patreon creators typically maintain a presence elsewhere too. Pair Patreon Scraper with Instagram Post Details Scraper or TikTok Scraper to pull the engagement numbers behind the social links this Actor returns, or with Skool Group Community Infos Scraper if the creator also runs a paid community there.
How does Patreon Scraper differ from the official Patreon API?
Patreon's official API (API v2) requires an OAuth app and only returns data the authenticated user is entitled to — their own campaign, or the campaigns they've joined as a patron — with no endpoint to search or list other creators. Patreon Scraper reads the same public pages a browser sees and can look up any creator by URL, username, or keyword without authenticating with Patreon at all.
| Feature | Patreon API v2 | Patreon Scraper |
|---|---|---|
| Authentication | OAuth 2.0 app registration + user authorization | None — public pages only |
| Search/discover other creators | Not supported — limited to the authenticated user's own campaign or memberships | Built-in keyword search across public campaigns |
| Access to any creator by URL | No — that creator must authorize your app | Yes — any public patreon.com/<username> URL |
| Rate limits | 100 requests/2 sec (client), 100 requests/min (access token) | Governed by the Actor's own retry and proxy-escalation logic |
| Setup time | App registration, OAuth flow, scope approval | Paste a URL or keyword and run |
| Bulk export | Per-campaign, per-authorized-user only | Any number of campaigns in one run, one row each |
Figures for the official API as published on docs.patreon.com, checked 2026-08-16.
Use the official API when you're building something a creator installs and authorizes for their own campaign. Use Patreon Scraper when you need public data on creators — yours or a competitor's — without asking each one to grant API access.
How to use Patreon Scraper
Patreon Scraper runs on the Apify platform — no separate signup, credential, or app registration beyond an Apify account.
- Open Patreon Scraper on its Apify Store listing (or in your own Apify Console if you already use Apify).
- Add one or more items to
startUrls— a fullpatreon.com/<username>URL to scrape that creator directly, or a plain keyword to run through Patreon's own creator search. - Set
maxDataif you're using keywords, to cap how many campaigns each keyword returns (default 10, maximum 500). - Configure
proxyConfigurationif you want a specific Apify proxy group; leave it default and the Actor escalates automatically on its own. - Start the run and download results as JSON, CSV, or any other format Apify's dataset export supports.
How to scale to bulk campaign extraction
startUrls accepts any number of items in one run — mix direct profile URLs with search keywords in the same list. Each keyword is resolved independently up to maxData campaigns; each URL or username is always fully resolved regardless of maxData. There's no need to loop separate runs for bulk lookups — one run with a long startUrls list covers it.
What can you do with Patreon campaign data?
- 📊 Creator-economy analysts tracking market sizing use
patron_countandpaid_membersacross a keyword search to benchmark how large a niche's creator base is. - 💰 Sponsorship and marketing teams use
earnings_per_monthandtiersto shortlist creators whose monetization level matches a campaign budget before reaching out. - 🏆 Competitive intelligence teams monitor
tiersanddiscord_accessto see how rival creators price and structure their membership perks. - 🔗 Growth teams cross-reference
socialsand the per-platform columns (instagram,youtube,tiktok) to map a creator's cross-platform footprint from one row. - 🤖 AI engineers feed the typed JSON output into a RAG pipeline or agent tool, using
aboutas retrievable creator context andtiers/earnings_per_monthas structured facts an LLM can reason over without parsing HTML.
How does Patreon Scraper handle rate limits and blocking?
Patreon sits entirely behind Cloudflare, so every request goes out with a real Chrome TLS/JA3 fingerprint (curl_cffi impersonating Chrome 131) rather than a generic HTTP client signature. If a request comes back 403, 429, or 503, the Actor automatically escalates — unproxied, then Apify's datacenter proxy, then Apify's residential proxy — without any input change from you; a custom proxy URL you supply is used as-is and isn't escalated away from. Each request gets up to 3 attempts with a short backoff before it's treated as failed. Patreon also rotates its internal Next.js build id on every deploy; if a lookup 404s because of that, the Actor refreshes the build id once and retries, then falls back to Patreon's campaigns API for any campaign it still can't resolve through the primary route. A campaign that can't be resolved after all of that is returned as a row with success: false and an error reason instead of silently vanishing from the output.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
startUrls | Yes | array | An item containing patreon.com/ (e.g. https://www.patreon.com/GreenRoomPythons) is scraped directly as that creator's campaign. Anything else - including a bare username - is used as a search keyword and run through Patreon's own creator search. | ["https://www.patreon.com/GreenRoomPythons", "python"] |
maxData | No | integer | How many campaigns to return per search keyword (default 10, maximum 500). Direct profile URLs and usernames are always all scraped and are not limited by this number. Patreon's own search is the real ceiling: it returned 44-174 results per keyword when measured on 2026-08-10, and the run stops honestly when the result set is exhausted. | 25 |
proxyConfiguration | No | object | Apify proxy groups, or your own proxy URLs when the section is expanded. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
⚠️ maxData is capped by Patreon's own search results, not just by the number you enter. Patreon's creator search returned 44–174 campaigns per keyword when measured on 2026-08-10; setting maxData higher than what a keyword actually has won't produce more rows — the run stops honestly once Patreon's result set for that keyword is exhausted.
Example input
{"startUrls": ["https://www.patreon.com/GreenRoomPythons","python","web development"],"maxData": 25,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
⬆️ Output
Patreon Scraper writes typed, normalized JSON to an Apify dataset — one row per campaign, with the same field names on every run. Export it as JSON, CSV, Excel, or any other format Apify's dataset export supports.
Only successful rows (success: true) are billed, under the row_result charged event. A campaign that can't be resolved is still returned — as a row with success: false and an error reason — but is not charged. Filter it out of billed results with success === true, or filter it into an error report with error != null.
Example output
{"url": "https://www.patreon.com/greenroompythons","id": "campaign_9284617","campaign_id": 9284617,"username": "greenroompythons","name": "Green Room Pythons","creation_name": "is creating reptile care videos","creator_name": "Chris Peterson","about": "Green Room Pythons is a resource for reptile keepers.\n\nWe publish weekly husbandry breakdowns and Q&A streams.","avatar_photo_url": "https://c10.patreonusercontent.com/avatar.jpg","avatar_photo_blurred_url": "https://c10.patreonusercontent.com/avatar_blurred.jpg","thumb": "https://c10.patreonusercontent.com/avatar_thumb.jpg","primary_theme_color": 5802752,"is_nsfw": false,"patron_count": 1284,"total_members": 1284,"paid_members": 812,"total_posts": 341,"post_count": 341,"earnings_per_month": 4210.5,"earnings_hidden": false,"earnings_currency": "USD","tiers": [{"id": "8452201","name": "Hatchling","price": 5.0,"description": "Early access to every video plus the monthly Q&A stream.","discord_access": true},{"id": "8452207","name": "Breeder","price": 25.0,"description": "Everything in Hatchling, plus one-on-one husbandry consults.","discord_access": true}],"socials": [{ "platform": "instagram", "url": "https://instagram.com/greenroompythons", "display_name": "greenroompythons", "is_public": true },{ "platform": "youtube", "url": "https://youtube.com/@greenroompythons", "display_name": null, "is_public": true }],"instagram": "https://instagram.com/greenroompythons","twitter": null,"youtube": "https://youtube.com/@greenroompythons","facebook": null,"twitch": null,"tiktok": null,"data_source": "about_json","query": "python","success": true,"error": null}
An unresolved campaign is returned with fewer fields instead of being dropped:
{"url": "https://www.patreon.com/somerenamedvanity","username": "somerenamedvanity","query": "direct","success": false,"error": "about_json_http_404 | campaign_id_unresolved"}
How does it work?
Patreon Scraper reaches Patreon over curl_cffi, sending a real Chrome TLS/JA3 fingerprint on every request instead of a generic scraper signature, with Apify Proxy layered in and escalated on demand. It resolves each campaign from Patreon's own Next.js SSR route (/_next/data/<buildId>/<vanity>/about.json), and automatically falls back to Patreon's JSON:API campaigns endpoint when that route answers with a redirect envelope instead of campaign data — a real slice of Patreon vanities do this, and used to disappear silently. Only data those two endpoints publish is returned; nothing is scraped from rendered page HTML beyond a campaign id. Because both are Patreon's own structured data sources rather than the visual page, the output schema stays stable across Patreon UI redesigns and build-id rotations.
Integrations
Patreon Scraper runs on Apify, so it works with anything that can call the Apify API.
Calling Patreon Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("your-username/patreon-scraper").call(run_input={"startUrls": ["https://www.patreon.com/GreenRoomPythons", "python"],"maxData": 25,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["patron_count"])
Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.
No-code tools (n8n, Make)
In n8n, use the HTTP Request node against Apify's run-sync-get-dataset-items endpoint with your input JSON in the request body. In Make, the Apify app's "Run Actor and Get Dataset Items" module does the same without writing a raw request by hand.
⚖️ Is it legal to scrape Patreon campaigns?
Yes — Patreon Scraper only reads pages Patreon publishes to any visitor without a login, the same data an unauthenticated browser or search engine sees. This is business and monetization data — campaign names, tier pricing, patron counts — that creators publish specifically to attract paying members, not private personal records, so GDPR and similar personal-data regimes generally do not attach to it. What governs it instead is Patreon's own Terms of Service and database-rights law in jurisdictions that recognize them; scraping public web data is broadly permitted under current US and EU case law, but you're responsible for complying with Patreon's ToS and any rules that apply in your jurisdiction. Consult legal counsel if your use case involves bulk storage of personal identifiers such as creator names.
❓ Frequently asked questions
What Patreon campaign fields does Patreon Scraper return?
Patreon Scraper returns patron_count, paid_members, tiers, earnings_per_month, and socials, among 25+ other fields per campaign — see the full data fields table above.
Does Patreon Scraper require a Patreon account or login?
No. Every field comes from pages and JSON endpoints Patreon serves to a logged-out visitor; the Actor never authenticates with Patreon and needs no OAuth app or API key from you.
How many Patreon campaigns can I extract in one run?
As many as your startUrls list contains. Direct profile URLs and usernames are always fully resolved with no cap; keyword searches return up to maxData campaigns each (default 10, maximum 500), bounded by however many results Patreon's own search actually has for that keyword.
What happens if a Patreon campaign can't be resolved?
It still appears in your dataset — as a row with success: false, the username that was attempted, and an error string explaining why (an HTTP status from Patreon, or campaign_id_unresolved). These rows are not charged, so a dead vanity or a renamed URL costs nothing.
Can I scrape multiple Patreon campaigns at once?
Yes — startUrls accepts any mix of direct profile URLs and search keywords in a single run, each resolved independently.
Does Patreon Scraper work with Claude, ChatGPT, and other AI agent tools?
It's callable as an HTTP endpoint through the Apify API by any agent framework that can make a request — pass your input JSON, wait for the run to finish, and read the dataset back as JSON.
How does Patreon Scraper compare to other Patreon scrapers?
There's no independently verified comparison to cite. What's documented here comes from this Actor's own implementation: it resolves campaigns from two independent Patreon endpoints — falling back automatically when Patreon's primary route returns a redirect instead of data — never charges for a failed lookup, and returns earnings as null rather than 0 when a creator hasn't published them.
Does Patreon Scraper return data in a format LLMs can use directly?
Yes. Every field is typed JSON — strings, integers, booleans, and nested arrays for tiers and socials — with the same field names on every row. Pass it directly to an LLM, index about into a vector store, or feed the numeric fields to an agent tool without parsing HTML.
What happens when Patreon changes its layout or anti-bot system?
The Actor is maintained and the output schema stays stable across Patreon's own layout and build-id changes — it already handles Patreon rotating its Next.js build id mid-run by refreshing and retrying automatically.
Can I use Patreon Scraper without managing proxies or browser infrastructure?
Yes — the Actor handles TLS fingerprinting and proxy escalation (unproxied → Apify datacenter → Apify residential) automatically on a block. You only need to supply proxyConfiguration if you want to pin a specific proxy group instead.
Which Patreon campaign fields work best for AI training data and RAG indexing?
For RAG, index about (long-form creator bio text) alongside name and creation_name for retrieval context. For structured training data or agent facts, use patron_count, paid_members, tiers, and earnings_per_month — typed primitives that stay consistent across every row.
🔗 Related scrapers
| Scraper Name | What it extracts |
|---|---|
| Skool Group Community Infos Scraper | Name, story, member count, activity, owner and tabs for public Skool community groups |
| Instagram Post Details Scraper | Likes, comments, captions and owner profile details from Instagram post, reel and TV URLs |
| TikTok Scraper | Profiles, videos, reposts, hashtags and keyword search results from TikTok |
| Reddit Scraper | Posts, comments, users, subreddits and search results from public Reddit |
| YouTube Video Summarizer | Video metadata, chapters and timestamped transcripts, with optional AI summaries |
💬 Your feedback
Found a bug, or a Patreon field this Actor doesn't capture yet? Let us know through the Issues tab on the Actor's Apify Console page, or leave a review on the store listing — both reach the maintainer directly.