{
  "openapi": "3.0.1",
  "info": {
    "title": "Patreon Scraper - Creators, Tiers & Leads",
    "description": "Scrape Patreon: search creators by keyword, full campaign details (patron count, membership tiers & pricing, goals, estimated earnings), posts, plus creator-contact leads (cross-platform socials, website, emails). Monitoring mode. No login, no API key, no browser.",
    "version": "0.1",
    "x-build-id": "oTA3EIMFsZz4STPbO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~patreon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-patreon-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapesage~patreon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-patreon-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapesage~patreon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-patreon-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "searchCreators",
              "creatorDetails",
              "creatorPosts"
            ],
            "type": "string",
            "description": "Pick a job. Search creators finds Patreon creators by keyword (full campaign details + leads). Creator details pulls full details for specific creators. Creator posts pulls a creator's published posts (great for monitoring).",
            "default": "searchCreators"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search Patreon for, e.g. `podcast`, `fitness`, `digital art`, `game dev`, `newsletter`, a niche, or a creator name. One row per term. Used by the Search creators mode.",
            "items": {
              "type": "string"
            }
          },
          "creatorUrls": {
            "title": "Creator URLs / handles / campaign IDs",
            "type": "array",
            "description": "Creators to pull details or posts for: page URLs (`https://www.patreon.com/MSsecretpod` or `/c/<handle>`), bare handles (`MSsecretpod`), or numeric campaign ids (`1055672`). One per row. (Modes: Creator details, Creator posts.)",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerQuery": {
            "title": "Max creators per search term",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap the number of creators returned per search term. Results are paginated automatically until this limit or the result set is exhausted. The minimum patrons, contacts and NSFW filters are applied first, so the cap counts creators that pass them, and a creator two terms both find is returned once.",
            "default": 60
          },
          "includePosts": {
            "title": "Include creator posts",
            "type": "boolean",
            "description": "For creator modes, also output recent post records (type `post`) for each creator - title, publish date, type, paid/free, likes and comments. In monitoring mode this returns only NEW posts since the last run.",
            "default": false
          },
          "maxPostsPerCreator": {
            "title": "Max posts per creator",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many recent posts to pull per creator when 'Include creator posts' is on (or in the Creator posts mode).",
            "default": 20
          },
          "enrichCreatorContacts": {
            "title": "Enrich creator contacts (crawl website for emails, phone, socials)",
            "type": "boolean",
            "description": "Opt-in lead enrichment: visit each creator's own public website (home + a contact/about page) and extract contact emails, phone numbers and social links - for sponsorship, brand-deal, agency and tooling outreach. Only runs for creators that list a website.",
            "default": false
          },
          "minPatrons": {
            "title": "Minimum patrons",
            "minimum": 0,
            "type": "integer",
            "description": "Skip creators with fewer than this many patrons. 0 keeps everyone.",
            "default": 0
          },
          "withContactsOnly": {
            "title": "Only creators with a contact",
            "type": "boolean",
            "description": "Output only creators that have at least one email (from their summary/about or, if enrichment is on, their website) or a website. Tightens the result set to reachable leads. With this on, a search reads up to 10 creators per wanted result to find reachable ones.",
            "default": false
          },
          "includeNsfw": {
            "title": "Include NSFW creators",
            "type": "boolean",
            "description": "Include creators flagged as NSFW (adult). Turn off to exclude them from results.",
            "default": true
          },
          "monitorMode": {
            "title": "Monitoring mode - only new records",
            "type": "boolean",
            "description": "Remember what was already returned and emit ONLY records not seen in previous runs (new creators for a search, or new posts per creator). Pairs with Apify Schedules to track changes over time.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that holds the 'already seen' ids for monitoring mode. Use a different name per tracked target/query to keep their histories separate. Lowercase letters, digits and hyphens only.",
            "default": "patreon-monitor"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Maximum parallel requests. Lower it if you hit rate limits on very large runs.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Patreon is fronted by Cloudflare and challenges datacenter IPs, so the actor defaults to the Apify RESIDENTIAL proxy. Keep this default for reliable results.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}