{
  "openapi": "3.0.1",
  "info": {
    "title": "Kickstarter Scraper",
    "description": "Scrape Kickstarter campaigns — funding, backers, deadlines, reward tiers, creator history, full story, risks, and FAQ answers. Filter by keyword, category, state (live to prelaunch), country, or paste any discover URL. Optional creator contact emails. JSON or CSV out.",
    "version": "0.0",
    "x-build-id": "AVBUgcid5ukFqeJpk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~kickstarter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-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/memo23~kickstarter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-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/memo23~kickstarter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-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": {
          "startUrls": {
            "title": "Kickstarter URLs",
            "type": "array",
            "description": "Pasted kickstarter.com URLs — both kinds work: discover/browse URLs (e.g. `https://www.kickstarter.com/discover/advanced?category_id=16&sort=newest`, their filters are parsed automatically) and direct project URLs.",
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Free-text Kickstarter search terms, e.g. `smart home` or `board game`. Empty means no keyword search.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Top-level Kickstarter categories. Allowed values: art, comics, crafts, dance, design, fashion, film-and-video, food, games, journalism, music, photography, publishing, technology, theater (numeric Kickstarter category ids also accepted). Empty means all categories.",
            "items": {
              "type": "string"
            }
          },
          "projectUrls": {
            "title": "Project URLs",
            "type": "array",
            "description": "Direct kickstarter.com project URLs, e.g. `https://www.kickstarter.com/projects/creator/slug`. Skips discovery and fetches each project page straight away (always fully enriched).",
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "Campaign states",
            "type": "array",
            "description": "Campaign lifecycle states to include. Allowed values: live, successful, failed, canceled, upcoming (prelaunch pages), all. Default: live.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "magic",
              "popularity",
              "newest",
              "end_date",
              "most_funded",
              "most_backed"
            ],
            "type": "string",
            "description": "Discover sort key. `magic` is Kickstarter's default relevance ranking.",
            "default": "magic"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Filter to campaigns based in one country. ISO 3166-1 alpha-2 code, e.g. US, GB, DE, JP. Empty means worldwide."
          },
          "staffPicksOnly": {
            "title": "Projects We Love only",
            "type": "boolean",
            "description": "Only campaigns flagged \"Projects We Love\" by Kickstarter's editors. Applied server-side, so filtered-out campaigns are never fetched or charged.",
            "default": false
          },
          "locationWoeid": {
            "title": "Location (WOEID)",
            "minimum": 0,
            "type": "integer",
            "description": "City/region-level filter using a Yahoo WOEID — Kickstarter's own location filter (e.g. 44418 = London, 2459115 = New York). Find the id by picking a location on Kickstarter's discover page and copying `woe_id` from the URL. 0 disables.",
            "default": 0
          },
          "minPercentFunded": {
            "title": "Minimum percent funded",
            "minimum": 0,
            "type": "integer",
            "description": "Only push campaigns at or above this funding percent. 100 means fully funded only. 0 disables the filter.",
            "default": 0
          },
          "minBackers": {
            "title": "Minimum backers",
            "minimum": 0,
            "type": "integer",
            "description": "Only push campaigns with at least this many backers. 0 disables the filter.",
            "default": 0
          },
          "minPledgedUsd": {
            "title": "Minimum pledged (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only push campaigns with at least this much pledged, converted to USD. 0 disables the filter.",
            "default": 0
          },
          "launchedWithinDays": {
            "title": "Launched within last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Only push campaigns launched within this many days. 0 disables the filter.",
            "default": 0
          },
          "fetchDetails": {
            "title": "Fetch full campaign details (reward tiers + creator history)",
            "type": "boolean",
            "description": "Fetch each campaign's project page for full enrichment: reward tiers (title, price, backers per tier, estimated delivery, shipping, included items), add-on count, update/comment/FAQ counts, tags, creator biography, creator websites, and creator history (lifetime launched + backed projects). One extra page fetch per campaign; no extra charge per row. Direct project URLs are always fully enriched.",
            "default": false
          },
          "fetchStory": {
            "title": "Fetch full campaign story (story + risks + FAQ text)",
            "type": "boolean",
            "description": "Fetch the full campaign story via Kickstarter's GraphQL API: complete story HTML and plain text, the \"Risks and challenges\" section, FAQ questions with answers, and environmental commitments. One extra request per campaign. Heavy fields — turn on only when you need the actual copy.",
            "default": false
          },
          "enrichEmails": {
            "title": "Find creator contact emails (experimental)",
            "type": "boolean",
            "description": "Opt-in and best-effort: try to find a contact email for each campaign's creator by scraping the creator's own website (taken from the project page) or discovering it from the creator name. Adds `contactEmail` and `contactWebsite` columns plus a detailed `emailEnrichment` object. Turning this on also enables full campaign details. Billed via the Additional data event only when a contact is actually found ($0.005 per found contact — misses are never charged).",
            "default": false
          },
          "qualifyByPayment": {
            "title": "💳 Qualify by payment (flag businesses that take money online)",
            "type": "boolean",
            "description": "Requires \"Enrich with contact emails\". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No charge beyond the email enrichment it rides on.",
            "default": false
          },
          "dedupeAcrossRuns": {
            "title": "Skip campaigns pushed in previous runs",
            "type": "boolean",
            "description": "Remember pushed project ids in a named key-value store and skip them on later runs. Turn on for scheduled monitoring runs that only want newly discovered campaigns.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum campaigns to scrape",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on campaign rows pushed per run.",
            "default": 1000
          },
          "maxPagesPerSeed": {
            "title": "Max discover pages per seed",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Pages of 12 campaigns to walk per state × category × term combination. Kickstarter stops serving results near page 200 per combination.",
            "default": 200
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of pages processed in parallel.",
            "default": 10
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. Residential proxy is recommended for larger runs — Kickstarter throttles datacenter ranges past a few hundred fast requests.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}