{
  "openapi": "3.0.1",
  "info": {
    "title": "Kickstarter Scraper — Projects, Funding, Backers & Rewards",
    "description": "Scrape Kickstarter projects by keyword, category, state, location or discover URL: pledged, goal, backers, % funded, dates, creator, rewards, story. Track live campaigns on a schedule.",
    "version": "0.1",
    "x-build-id": "Eo1vH70mbqPSZVMdO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~kickstarter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-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/tortuga~kickstarter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-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/tortuga~kickstarter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords as you would type them into Kickstarter's search, one search per line, e.g. \"board game\", \"3d printer\", \"coffee\". The filters below (category, state, sort, location, goal, funding) apply to every search term. Leave empty and set only filters to browse a whole category or state.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Alternative to search terms: any Kickstarter discover page with filters set in the browser (https://www.kickstarter.com/discover/advanced?category_id=34&state=live&sort=end_date, /discover/categories/games/tabletop%20games, /discover/places/london-gb, /discover/tags/...), or single project pages (https://www.kickstarter.com/projects/elanlee/exploding-kittens), which always come with full details. The filter fields do not change start URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "Games",
              "Design",
              "Technology",
              "Publishing",
              "Comics",
              "Art",
              "Film & Video",
              "Music",
              "Fashion",
              "Food",
              "Crafts",
              "Photography",
              "Theater",
              "Dance",
              "Journalism"
            ],
            "type": "string",
            "description": "Used with the search terms: only projects in this Kickstarter category (all its subcategories included)."
          },
          "subcategory": {
            "title": "Subcategory",
            "type": "string",
            "description": "Used with the search terms: a subcategory name as Kickstarter shows it, e.g. \"Tabletop Games\", \"Video Games\", \"Product Design\", \"Gadgets\", \"Comic Books\", \"Fiction\". Overrides Category. A category id from a Kickstarter URL (category_id=34) works too."
          },
          "state": {
            "title": "Project state",
            "enum": [
              "live",
              "upcoming",
              "ending_soon",
              "successful",
              "failed",
              "canceled",
              "late_pledge"
            ],
            "type": "string",
            "description": "Used with the search terms: live campaigns, upcoming (pre-launch pages), live campaigns ending soonest first, successfully funded, failed, canceled, or funded projects still taking late pledges. Empty = all states."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "magic",
              "popularity",
              "newest",
              "end_date",
              "most_funded",
              "most_backed"
            ],
            "type": "string",
            "description": "Used with the search terms. Magic is Kickstarter's default mix; Newest is best for watching new launches; End date lists live campaigns ending soonest first. Default: Magic (or End date with state 'Ending soon')."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Used with the search terms: only projects from this place, e.g. \"London\", \"Berlin, Germany\", \"California\", \"Japan\". Looked up with Kickstarter's own location search (the first match is used and shown in the run log). A WOE id from a Kickstarter URL (woe_id=44418) also works."
          },
          "goalMin": {
            "title": "Goal from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects whose funding goal is at least this much, in US dollars (Kickstarter converts other currencies)."
          },
          "goalMax": {
            "title": "Goal up to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects whose funding goal is at most this much, in US dollars."
          },
          "pledgedMin": {
            "title": "Pledged from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects that have raised at least this much, in US dollars."
          },
          "pledgedMax": {
            "title": "Pledged up to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects that have raised at most this much, in US dollars."
          },
          "percentFundedMin": {
            "title": "Funded from (%)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects funded at least this percentage of their goal, e.g. 100 for funded projects, 500 for 5x overfunded."
          },
          "percentFundedMax": {
            "title": "Funded up to (%)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search terms: only projects funded at most this percentage of their goal, e.g. 99 for campaigns that have not reached their goal yet."
          },
          "projectsWeLove": {
            "title": "Only Projects We Love",
            "type": "boolean",
            "description": "Used with the search terms: only projects Kickstarter's staff picked as \"Projects We Love\"."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many projects in total (across all searches and URLs). Keeps cost predictable. Kickstarter shows at most 200 pages (9,600 projects) per search; when you ask for more, the actor splits the search by category, goal and funding range automatically.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max items per search",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap for each search term or discover URL, so one busy search does not use up Max items for the others (e.g. 50 projects for each of 10 keywords). Empty = no per-search cap."
          },
          "includeDetails": {
            "title": "Include project details",
            "type": "boolean",
            "description": "Also get each project's reward tiers (title, price, backers, limit, remaining, estimated delivery, shipping, included items), FAQ, update and comment counts, risks and challenges text, and the campaign story as plain text. Fetched in batches of 8 projects; charged as an extra 'detail' event per project (see pricing). Project URLs always include details.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new items or items whose price/status changed (new projects; for campaigns: a new pledged amount, backer count or state such as live -> successful). Use with a Schedule; unchanged items are not charged. With this on, Max items is the number of projects checked per run.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Kickstarter sits behind Cloudflare, which blocks datacenter IPs, so Apify RESIDENTIAL proxy is the default and recommended. Residential traffic is billed by Apify per GB: about $0.015 per 1,000 projects from searches (48 per request), about 10 KB more per project with details, and about 150 KB per project URL (the full project page).",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}