# Kickstarter Scraper - Projects, Funding, Backers & Rewards (`scrapewise/kickstarter-scraper`) Actor

Scrape Kickstarter projects by keyword, category, location and status: goal, amount pledged (also in USD), percent funded, backers, deadline, category, country and creator name. Optional reward tiers, tags, comments and updates. Project and discover links work. Error rows are free.

- **URL**: https://apify.com/scrapewise/kickstarter-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 project delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kickstarter Scraper: projects with goal, pledged, backers, deadline and reward tiers

Kickstarter Scraper collects **projects from kickstarter.com** by keyword, category, location, status and funding
range, or from links you copy from the site. Each project comes back as one clean row: name and blurb, status,
category, goal and amount pledged (in the project currency and in USD), percent funded, backers, average pledge,
launch date, deadline, campaign length, days left, country and city, image, video and the creator's public name.
Turn on `includeDetails` to also get every reward tier (price, backers, limit, estimated delivery, shipping), the
tags and the comments and updates counts. No account or cookies are needed.

It is used for crowdfunding market research (what gets funded in a niche and at what price), to find hardware and
board game launches early, to track live campaigns day by day, to build lead lists of creators and brands, and to
study pricing of reward tiers.

### At a glance

| What | Price |
|---|---|
| Project delivered | **US$ 1.00 per 1,000 projects** (US$ 0.001 each) |
| Run start | US$ 0.005 per run |

- 1,000 projects = **US$ 1.005**, with or without the reward details.
- Error rows, duplicates and projects skipped by `onlyNew` are never charged. `maxItems` is a hard cap, and a
  spending limit set on the run stops it cleanly with everything delivered so far.
- About 300 projects in 20 seconds without details; with details each project page is opened too (about 2 per second).

### Quick start

```json
{
  "searchQueries": ["board game"],
  "maxItems": 100
}
```

The most funded technology projects from London, with reward tiers:

```json
{
  "categories": ["technology"],
  "location": "London",
  "state": "successful",
  "sortBy": "most_funded",
  "includeDetails": true,
  "maxItems": 200
}
```

Live campaigns already over 100% funded, ending soon:

```json
{
  "searchQueries": ["3d printer", "camping gear"],
  "state": "live",
  "percentFunded": "over100",
  "sortBy": "end_date"
}
```

Links from the site work too:

```json
{
  "startUrls": [
    "https://www.kickstarter.com/projects/kokoon/sleep-headphones",
    "https://www.kickstarter.com/discover/categories/games/tabletop%20games?sort=newest"
  ]
}
```

### Input

| Field | What it does |
|---|---|
| `searchQueries` | Words to search, one per line. Each keyword is one search. |
| `categories` | Main categories: Art, Comics, Crafts, Dance, Design, Fashion, Film & Video, Food, Games, Journalism, Music, Photography, Publishing, Technology, Theater. Each one is searched on its own. |
| `categoryId` | A numeric subcategory id (34 = Tabletop Games; every row shows its `categoryId`). |
| `location` | City, region or country in English. Only projects from that place. |
| `state` | All, live, successful, failed, canceled or upcoming (pre-launch). |
| `sortBy` | Popularity, Magic (Kickstarter mix), Newest, Ending soon, Most funded, Most backed. |
| `percentFunded` | Under 75%, 75% to 100%, over 100%. |
| `goalRange`, `pledgedRange` | USD ranges from under $1,000 to over $1,000,000. |
| `staffPicksOnly` | Only Projects We Love. |
| `startUrls` | Project links, or discover links (category, place or advanced search; filters in the link are kept). |
| `includeDetails` | Reward tiers, tags, comments and updates counts (opens each project page; same price). |
| `maxItems` | Cap for the whole run (default 50; 0 = no cap). |
| `onlyNew` | Remembers the projects delivered in earlier runs of the same search and returns only new ones. |
| `proxyConfiguration` | Apify Proxy by default. |

`searchQuery`, `keyword`, `query`, `maxResults`, `urls` and `projectUrls` are accepted too, so inputs written for
other Kickstarter tools keep working.

### Output

One row per project (`type: project`):

| Field | What it is |
|---|---|
| `projectId`, `url` | Kickstarter project id and link |
| `name`, `blurb` | Project name and short pitch |
| `state` | live, successful, failed, canceled, submitted (upcoming) |
| `category`, `parentCategory`, `categoryId` | Subcategory, main category and the subcategory id |
| `goal`, `pledged`, `currency` | Goal and amount pledged in the project currency |
| `goalUsd`, `pledgedUsd` | The same two values in USD |
| `percentFunded`, `backersCount`, `averagePledgeUsd` | Funding progress, backers and average pledge in USD |
| `launchedAt`, `deadline`, `createdAt`, `stateChangedAt` | Campaign dates (UTC) |
| `campaignDays`, `daysLeft` | Campaign length and days left (live projects only) |
| `isStaffPick`, `isLatePledgeOpen` | Projects We Love, and late pledges open after the campaign |
| `country`, `countryName`, `location`, `locationType` | Where the project is from |
| `imageUrl`, `videoUrl` | Main image and campaign video (MP4) |
| `creatorName`, `creatorId` | Creator's public name and account id |
| `sourceQuery` | Which keyword, category or link produced this row |

With `includeDetails`: `rewards` (each tier with `title`, `minimum`, `description`, `backersCount`,
`estimatedDelivery`, `shipping`, `available`, plus `limit` and `remaining` for limited tiers), `rewardsCount`, `tags`,
`commentsCount`, `updatesCount`.

One real row (image and video links left out):

```json
{
  "type": "project",
  "projectId": 1587268967,
  "name": "Philips x Kokoon Sleep Headphones",
  "blurb": "The ultimate sleep earbuds are here - start your journey to better sleep.",
  "url": "https://www.kickstarter.com/projects/kokoon/sleep-headphones",
  "state": "successful",
  "category": "Wearables",
  "parentCategory": "Technology",
  "goal": 10000,
  "pledged": 548514,
  "currency": "GBP",
  "goalUsd": 12533.46,
  "pledgedUsd": 687478.06,
  "percentFunded": 5485.1,
  "backersCount": 3582,
  "averagePledgeUsd": 191.93,
  "launchedAt": "2023-06-14T13:00:45Z",
  "deadline": "2023-07-19T13:00:45Z",
  "campaignDays": 35.0,
  "isStaffPick": true,
  "country": "GB",
  "location": "London, UK",
  "creatorName": "Kokoon Technology"
}
```

### Errors you may see

Every error is a row with `errorCode` and is never charged:

| errorCode | Meaning |
|---|---|
| `INVALID_INPUT` | A field has a wrong value (for example an unknown category) |
| `INVALID_URL` | The link is not a Kickstarter project or discover link |
| `LOCATION_NOT_FOUND` | Kickstarter did not recognize the location |
| `NO_RESULTS` | No project for this keyword and filters |
| `NOT_FOUND` | A project link that does not exist or was removed |
| `NOT_REACHED` | The run timeout, the cost guard or `maxItems` arrived before this link |
| `BLOCKED` | Kickstarter refused every attempt; run it again in a few minutes |

### Integrations, scheduling and AI agents

- **Schedule** a search daily with `onlyNew` on in [Apify schedules](https://docs.apify.com/platform/schedules) to get
  each new launch in your niche once, or run the same live campaigns every day to chart their funding curve.
- **Export** as JSON, CSV, Excel or XML, or read the dataset from the [Apify API](https://docs.apify.com/api/v2).
- **Connect** it to Make, n8n, Zapier, Slack or Google Sheets through
  [Apify integrations](https://docs.apify.com/platform/integrations).
- **AI agents:** call it as a tool through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp)
  in Claude, ChatGPT, Cursor or any MCP client, for example "list the 50 most funded tabletop games of the last year
  and the price of their cheapest reward tier".

### FAQ

**Do I need a Kickstarter account?** No. The Actor reads the same public discover pages the site shows to visitors.

**How many projects can I get?** Kickstarter shows up to 2,400 projects per search (200 pages of 12). For more,
split by category, subcategory, location, status or funding range: each combination is its own search.

**Why are amounts in different currencies?** `goal` and `pledged` are in the project's own currency, as on the
site. `goalUsd` and `pledgedUsd` convert both to USD with Kickstarter's rate, so rows can be compared.

**What does `includeDetails` add, and does it cost more?** It opens each project page for the reward tiers, tags and
the comments and updates counts. The price per project is the same; the run is slower.

**Can I follow a live campaign over time?** Yes. Put its project link in `startUrls` and schedule the run hourly or
daily; each row has `pledged`, `backersCount` and `scrapedAt`.

**Is it legal?** The Actor reads public project pages only. Of the creator it returns only the public name shown on
the project and the account id, with no email, avatar or profile data. You are responsible for how you use the data
under the laws that apply to you.

**Something broke or a field is missing?** Open an issue on the Actor page with the input you used; issues are
answered quickly.

### Limitations

- Up to 2,400 projects per search, a limit of Kickstarter's own discover pages.
- The Magic order is a random mix; the Actor keeps the same mix across the pages of one run.
- Story text, FAQ and comments' content are not collected.

### Changelog

- **16 Oct 2026**: first version. Keyword, category, subcategory, location, status, funding and goal filters, six
  sort orders, project and discover links, optional reward tiers and tags, `onlyNew`, free error rows.

# Actor input Schema

## `searchQueries` (type: `array`):

Words to search on Kickstarter, one per line, for example board game, 3d printer or travel backpack. Each keyword is one search. Can be left empty when you pick a category or a location.

## `categories` (type: `array`):

Kickstarter main categories. Each category is searched on its own (combined with each keyword). Empty = all categories.

## `categoryId` (type: `integer`):

Optional numeric Kickstarter subcategory id, for example 34 for Tabletop Games (the categoryId field of any row shows it).

## `location` (type: `string`):

City, region or country in English, for example London, California or Japan. Only projects from that place. Empty = worldwide.

## `state` (type: `string`):

Campaign status.

## `sortBy` (type: `string`):

Order of the results, same options as the site. onlyNew switches Popularity and Magic to Newest.

## `percentFunded` (type: `string`):

Only projects in this funding range.

## `goalRange` (type: `string`):

Only projects whose funding goal is in this range (USD).

## `pledgedRange` (type: `string`):

Only projects that raised an amount in this range (USD).

## `staffPicksOnly` (type: `boolean`):

On: only projects picked by the Kickstarter staff.

## `startUrls` (type: `array`):

Optional: Kickstarter project links (one row each, with rewards and tags) or discover links copied from the site (category, place or advanced search pages; filters in the link are kept).

## `includeDetails` (type: `boolean`):

On: opens each project page for the reward tiers (price, backers, limit, delivery), tags and the comments and updates counts. Slower; same price per project.

## `maxItems` (type: `integer`):

Hard cap for the whole run, across all searches. 0 = no cap (Kickstarter shows up to 2,400 projects per search).

## `onlyNew` (type: `boolean`):

On: remembers the projects delivered in earlier runs of the same search (in your account) and delivers only projects not seen before. Skipped projects are free.

## `proxyConfiguration` (type: `object`):

Apify Proxy by default. Change it only if you know you need to.

## Actor input object example

```json
{
  "searchQueries": [
    "board game"
  ],
  "state": "all",
  "sortBy": "popularity",
  "percentFunded": "any",
  "goalRange": "any",
  "pledgedRange": "any",
  "staffPicksOnly": false,
  "includeDetails": false,
  "maxItems": 50,
  "onlyNew": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "board game"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/kickstarter-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["board game"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/kickstarter-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "board game"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/kickstarter-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/kickstarter-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xqK3qLoZig06JSSCC/builds/uKB5nFPQMs0xcJG3L/openapi.json
