# Kickstarter Projects Scraper (`xtracto/kickstarter-projects`) Actor

Scrape Kickstarter crowdfunding projects by category, state, and keyword. Returns funding metrics (goal, pledged, backers\_count, percent\_funded), creator, location, deadline, and optional rewards/tags via project page enrichment.

- **URL**: https://apify.com/xtracto/kickstarter-projects.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** Developer tools, Automation, E-commerce
- **Stats:** 6 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Kickstarter Projects Scraper

Extracts crowdfunding project data from Kickstarter — funding progress, backer counts, creator details, categories, and campaign deadlines — for any combination of keywords, categories, and campaign states.

***

### Why use this actor

- **No account required** — works entirely on public data without logging in
- **Full funding metrics** — goal, amount pledged, backer count, percent funded, and campaign deadline in every record
- **Two flexible modes** — search by keyword (e.g. "board game", "3D printing") or bulk-sweep entire categories (Games, Technology, Design, etc.)
- **All campaign states** — collect live, successful, failed, or canceled projects for market research and trend analysis
- **Optional deep detail** — enable enrichment to add pledge reward tiers, tags, and community engagement counts
- **Stable structured output** — consistent fields ready to load into a spreadsheet, database, or analytics pipeline

***

### How it works

1. You choose a mode: **search** (enter one or more keywords) or **discover** (sweep by category and state).
2. The actor pages through results automatically, collecting up to your `maxItems` limit.
3. Each project record is saved to your dataset as soon as it is collected — you can start downloading before the run finishes.
4. Optionally enable **Enrich from project pages** to add reward tiers, tags, and engagement counts to every record.

You do not need to manage browsers, write code, or handle pagination.

***

### Input

#### Search mode — find projects by keyword

```json
{
  "mode": "search",
  "searchTerms": ["board game"],
  "state": "all",
  "sort": "newest",
  "maxItems": 100,
  "requestDelaySecs": 2,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Discover mode — bulk sweep by category

```json
{
  "mode": "discover",
  "categoryIds": [12],
  "state": "successful",
  "sort": "most_funded",
  "maxItems": 500,
  "requestDelaySecs": 2,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Field reference

| Field | Type | Description |
|---|---|---|
| `mode` | string | `"search"` — find projects by keyword. `"discover"` — sweep by category and state. |
| `searchTerms` | array | Keywords to search (search mode only). Each term runs independently. Up to ~280 results per term. Example: `["board game", "card game"]`. |
| `categoryIds` | array | Kickstarter category IDs to sweep (discover mode). Leave empty to sweep all 14 top-level categories. See category table below. |
| `state` | string | Campaign state filter. `"all"` (default in search), `"live"`, `"successful"`, `"failed"`, `"canceled"`. |
| `sort` | string | Sort order. `"newest"` (default), `"most_funded"`, `"most_backed"`, `"end_date"`, `"magic"`. |
| `maxItems` | integer | Maximum PROJECT records to collect. `0` = no limit. Default: 100. |
| `enrichProjectPages` | boolean | Fetch each project page for reward tiers, tags, and engagement counts. Doubles runtime. Default: false. |
| `requestDelaySecs` | number | Pause between requests in seconds. Minimum 1.5 recommended. Default: 2.0. |
| `proxyConfiguration` | object | Proxy settings. Residential proxies recommended for large runs. |

#### Category ID reference

| ID | Category | ID | Category |
|----|----------|----|----------|
| 1  | Art | 12 | Games |
| 3  | Comics | 13 | Journalism |
| 6  | Dance | 14 | Music |
| 7  | Design | 15 | Photography |
| 9  | Fashion | 16 | Technology |
| 10 | Film & Video | 17 | Publishing |
| 11 | Food | 18 | Theater |

Sub-category IDs also accepted — for example `34` = Tabletop Games, `341` = Wearables.

***

### Output

#### Search mode sample (`mode=search`, `searchTerms=["board game"]`)

```json
{
  "_input":     "board game",
  "_source":    "S2-search",
  "_scrapedAt": "2026-06-10T12:16:12Z",
  "recordType": "PROJECT",
  "id": 1680359054,
  "name": "HEAVY TRANSPORTERS of WW2 (Volume 2) (scale 1:56)",
  "blurb": "3D printable STL files from Wargame3D. HEAVY TRANSPORTERS of WW2 (Volume 2) (scale 1:56, 28mm)",
  "state": "live",
  "goal": 350.0,
  "pledged": 531.0,
  "backers_count": 6,
  "percent_funded": 151.71,
  "currency": "EUR",
  "deadline": 1782387640,
  "launched_at": 1781091640,
  "staff_pick": false,
  "country": "PL",
  "slug": "heavy-transporters-of-ww2-volume-2-scale-1-56",
  "category": { "id": 34, "name": "Tabletop Games", "parent_name": "Games" },
  "creator": { "id": 1922924163, "name": "Wargame3d", "slug": "planes3d" },
  "location": { "displayable_name": "Lublin, Poland", "country": "PL" },
  "urls": { "web": { "project": "https://www.kickstarter.com/projects/planes3d/heavy-transporters-of-ww2-volume-2-scale-1-56" } }
}
```

#### Discover mode sample (`mode=discover`, `categoryIds=[34]`, `state=live`)

```json
{
  "_input":     "discover/cat=34/state=live/sort=newest",
  "_source":    "S1-discover",
  "_scrapedAt": "2026-06-10T12:16:12Z",
  "recordType": "PROJECT",
  "id": 1303370749,
  "name": "ABC Messenger Modular Game Bag",
  "blurb": "Compact for daily carry. Expands for full game sessions.",
  "state": "live",
  "goal": 3000.0,
  "pledged": 3076.0,
  "backers_count": 20,
  "percent_funded": 102.53,
  "currency": "GBP",
  "deadline": 1783674014,
  "launched_at": 1781082014,
  "staff_pick": false,
  "country": "GB",
  "slug": "abc-messenger-modular-game-bag",
  "category": { "id": 34, "name": "Tabletop Games", "parent_name": "Games" },
  "creator": { "id": 146432849, "name": "PLEI DESIGN", "slug": "pleistudio" },
  "location": { "displayable_name": "London, UK", "country": "GB" },
  "urls": { "web": { "project": "https://www.kickstarter.com/projects/pleistudio/abc-messenger-modular-game-bag" } }
}
```

With `enrichProjectPages: true`, each record also includes: `rewards` (all pledge tiers with amounts and descriptions), `tags`, `add_ons`, `comments_count`, `updates_count`.

#### Output field reference

| Field | Type | Description |
|---|---|---|
| `recordType` | string | `"PROJECT"` for campaign records. `"SEARCH_RUN"` for per-term metadata (search mode only). |
| `id` | integer | Kickstarter project ID. |
| `name` | string | Campaign title. |
| `blurb` | string | Short campaign description. |
| `state` | string | Campaign state: `live`, `successful`, `failed`, or `canceled`. |
| `goal` | number | Funding goal in the campaign's currency. |
| `pledged` | number | Amount pledged so far. |
| `backers_count` | integer | Number of backers. |
| `percent_funded` | number | Pledged amount as a percentage of the goal. |
| `currency` | string | Currency code (e.g. `USD`, `EUR`, `GBP`). |
| `usd_pledged` | string | Pledged amount converted to USD. |
| `deadline` | integer | Campaign end date as a Unix timestamp. |
| `launched_at` | integer | Campaign launch date as a Unix timestamp. |
| `staff_pick` | boolean | Whether Kickstarter featured this campaign. |
| `country` | string | Creator's country code. |
| `slug` | string | URL slug for the project page. |
| `category` | object | Category name, ID, and parent category. |
| `creator` | object | Creator name, ID, slug, and avatar. |
| `location` | object | City and country of the creator. |
| `urls` | object | Direct links to the project page and rewards page. |
| `_scrapedAt` | string | ISO 8601 timestamp of when the record was collected. |

***

### Other actors in this collection

| Actor | What it collects |
|---|---|
| [Eventbrite Events Scraper](https://apify.com/xtracto/eventbrite-events) | Event listings with dates, venues, ticket prices, and organizer details |
| [immobiliare.it Listings Scraper](https://apify.com/xtracto/immobiliare-listings) | Italian property listings with price, size, and location |
| [mobile.de Listings Scraper](https://apify.com/xtracto/mobilede-listings) | German used-car listings with price, mileage, and specs |
| [Semrush Website Overview Scraper](https://apify.com/xtracto/semrush-website-overview) | Domain traffic estimates, backlinks, keywords, and competitor data |

# Actor input Schema

## `mode` (type: `string`):

search: find projects by keyword (use searchTerms). discover: bulk sweep by category, state, and sort order.

## `searchTerms` (type: `array`):

One or more keywords to search. Each term is searched independently and results are combined. Up to ~280 results per term.

## `categoryIds` (type: `array`):

Kickstarter category IDs to sweep. Leave empty to sweep all 14 top-level categories. Examples: 1=Art, 3=Comics, 6=Dance, 7=Design, 9=Fashion, 10=Film & Video, 11=Food, 12=Games, 13=Journalism, 14=Music, 15=Photography, 16=Technology, 17=Publishing, 18=Theater. Sub-categories also accepted (e.g. 34=Tabletop Games).

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

Filter by campaign state. In search mode defaults to all (~678k projects). In discover mode defaults to live (~2,750 active campaigns). Options: live, successful (~292k), failed (~301k), canceled (~66k), all (678k total).

## `sort` (type: `string`):

Sort order for results. newest = most recently launched first. most\_funded = highest pledged amount first. most\_backed = most backers first. end\_date = campaigns ending soonest first. magic = Kickstarter relevance algorithm.

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

Maximum total PROJECT records to collect. 0 = no limit (collect all available pages). Search mode returns up to ~280 results per term. Discover mode with state=all can return 678k+ records.

## `enrichProjectPages` (type: `boolean`):

If true, fetches each project's page to extract extra detail: rewards (all pledge tiers), tags, add-ons, comments count, updates count. Roughly doubles request count and runtime.

## `requestDelaySecs` (type: `number`):

Pause between page requests to avoid rate limiting. Minimum 1.5 seconds recommended. Values below 1.0 risk rate-limit responses, especially in search mode beyond page 14.

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

Proxy settings for cloud runs. Residential proxies are recommended for higher volumes to reduce the chance of blocks.

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "board game"
  ],
  "categoryIds": [],
  "state": "all",
  "sort": "newest",
  "maxItems": 100,
  "enrichProjectPages": false,
  "requestDelaySecs": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "mode": "search",
    "searchTerms": [
        "board game"
    ],
    "categoryIds": [],
    "state": "all",
    "sort": "newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/kickstarter-projects").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 = {
    "mode": "search",
    "searchTerms": ["board game"],
    "categoryIds": [],
    "state": "all",
    "sort": "newest",
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/kickstarter-projects").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 '{
  "mode": "search",
  "searchTerms": [
    "board game"
  ],
  "categoryIds": [],
  "state": "all",
  "sort": "newest"
}' |
apify call xtracto/kickstarter-projects --silent --output-dataset

```

## MCP server setup

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

```

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/e4qxnikQE7oUmRsdD/builds/JhZnPp1x9ku1gNobG/openapi.json
