{
  "openapi": "3.0.1",
  "info": {
    "title": "Kickstarter Scraper — Creator Leads, Contacts & Launch Monitor",
    "description": "Scrape Kickstarter campaigns and their creators — funding, backers, category, plus the creator's own website and social links — as real B2B leads. Search the full catalog by state, category and date window, or monitor new launches on a schedule.",
    "version": "0.1",
    "x-build-id": "TJbZL1W5K2XV20eDm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~kickstarter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-kickstarter-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/scrapersdelight~kickstarter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-kickstarter-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/scrapersdelight~kickstarter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-kickstarter-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",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "sweep",
              "monitor",
              "urls"
            ],
            "type": "string",
            "description": "search = one filter (state/category/date). sweep = tile the WHOLE catalog by month (beats the 200-page cap). monitor = only NEW campaigns since last run (schedule it). urls = scrape specific project URLs you paste below.",
            "default": "search"
          },
          "searchState": {
            "title": "Campaign state",
            "enum": [
              "live",
              "upcoming",
              "successful",
              "failed",
              "canceled",
              "late_pledge",
              "all"
            ],
            "type": "string",
            "description": "Which campaigns to include. 'live' = currently funding, 'upcoming' = prelaunch, 'successful/failed/canceled' = ended, 'all' = everything.",
            "default": "live"
          },
          "category": {
            "title": "Category (optional)",
            "type": "string",
            "description": "Filter by a Kickstarter category — a name ('Tabletop Games', 'Technology', 'Design') or a numeric category_id. Leave blank for all categories."
          },
          "deadlineAfter": {
            "title": "Deadline after (optional, YYYY-MM-DD)",
            "type": "string",
            "description": "Only campaigns whose deadline is on/after this date. Used to narrow a search window (sweep mode auto-tiles months for you)."
          },
          "deadlineBefore": {
            "title": "Deadline before (optional, YYYY-MM-DD)",
            "type": "string",
            "description": "Only campaigns whose deadline is before this date."
          },
          "startUrls": {
            "title": "Project URLs (mode = urls)",
            "type": "array",
            "description": "Paste specific Kickstarter project URLs to scrape (used when Mode = URLs).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max campaigns",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on campaigns per run. Set 0 for no cap (sweep mode). Creator enrichment adds ~1-2 page fetches per campaign, so give big runs more timeout.",
            "default": 100
          },
          "enrichCreators": {
            "title": "Enrich creators (website + socials)",
            "type": "boolean",
            "description": "Fetch each campaign page to pull the creator's own website + social profiles (the lead data). Costs nothing until a contact is actually found. Turn OFF for a fast metadata-only pull.",
            "default": true
          },
          "includeVerifiedName": {
            "title": "Include creator's verified legal name (PII)",
            "type": "boolean",
            "description": "Off by default. When a campaign exposes the creator's verified legal name (distinct from display name), include it. This is personal data — you are responsible for compliant use (GDPR/CCPA).",
            "default": false
          },
          "monitorStateStore": {
            "title": "Monitor state store (mode = monitor)",
            "type": "string",
            "description": "Named key-value store used to remember which campaigns were already seen, so monitor mode only returns NEW ones. Reuse the same name across scheduled runs.",
            "default": "kickstarter-monitor-state"
          },
          "webhookUrl": {
            "title": "Alert webhook (optional)",
            "type": "string",
            "description": "In monitor mode, POST newly-detected campaigns to this URL (Slack/Zapier/your endpoint). Leave blank for none."
          },
          "concurrency": {
            "title": "Concurrency (sessions)",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many campaigns to fetch in parallel — each on its own proxy session. Kickstarter blocks bursts from one IP, so parallelism = more sessions, not faster per session.",
            "default": 4
          },
          "enrichTries": {
            "title": "Enrichment fetch retries",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Max fresh-IP attempts per campaign page. Kickstarter project pages 403 most shared residential IPs, so we rotate IPs until one gets through (good IPs are then cached). Raise for higher coverage on Apify's pool; premium residential proxies need far fewer.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxy is recommended — Kickstarter rate-limits datacenter IPs. Keep the default unless you have your own proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "diagnose": {
            "title": "Diagnostic mode (dev)",
            "type": "boolean",
            "description": "Dev only. Logs the first parsed + enriched campaign, then exits.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}