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

Scrape Kickstarter projects: name, blurb, category, location, goal, pledged amount, backers, percent funded, state, staff pick, launch date, deadline and image. Filter by keyword, category, state and country.

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

## Pricing

from $0.80 / 1,000 project scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

Pull Kickstarter projects into JSON, CSV or Excel: name, blurb, category, location, funding goal, amount pledged, backers, percent funded, state, staff pick, launch date, deadline and image. Search by keyword, filter by category, state, country and funding level.

No login and no API key. Creators are private individuals, so creator names and profiles are never collected: this is project data only.

### What you get

| Field | Example |
|---|---|
| `name`, `blurb`, `url`, `slug` | project title, one-line pitch, canonical URL |
| `category`, `parentCategory` (+ ids) | `Product Design`, `Design` |
| `location`, `country`, `countryName` | `Mount Maunganui, NZ`, `NZ` |
| `currency`, `goal`, `pledged`, `usdPledged` | `NZD`, `9700`, `2107`, `1181.52` |
| `backersCount`, `percentFunded` | `5`, `21.72` |
| `state` | `live`, `successful`, `failed`, `canceled`, `upcoming` |
| `staffPick`, `spotlight` | booleans |
| `createdAt`, `launchedAt`, `deadline`, `stateChangedAt` | ISO timestamps |
| `durationDays`, `daysLeft` | campaign length; days remaining for live projects |
| `image`, `videoUrl` | cover image and campaign video |

### Input examples

Live technology and games projects, most backed first:

```json
{ "categories": ["technology", "games"], "state": "live", "sort": "most_backed", "maxItems": 300 }
```

Successful campaigns for a keyword, US only, at least 200 percent funded:

```json
{ "query": "mechanical keyboard", "state": "successful", "countries": ["US"], "minPercentFunded": 200, "maxItems": 200 }
```

Staff picks ending soon:

```json
{ "staffPicksOnly": true, "state": "live", "sort": "end_date" }
```

### Output example

```json
{
  "id": "302886622",
  "name": "Titanium Pen - The Precision CNC Machined \"Skelly 1000\"",
  "url": "https://www.kickstarter.com/projects/cogent/titanium-pen-precision-cnc-machined",
  "category": "Product Design",
  "parentCategory": "Design",
  "location": "Mount Maunganui, NZ",
  "currency": "NZD",
  "goal": 9700,
  "pledged": 2107,
  "backersCount": 5,
  "percentFunded": 21.72,
  "state": "live",
  "staffPick": false,
  "deadline": "2026-10-16T14:00:00.000Z"
}
```

### Pricing (pay per event)

| Event | Charged per |
|---|---|
| `project-result` | one project saved |

Plus a tiny run-start fee. Set a maximum cost per run in the Apify console and the Actor stops cleanly at that limit. See the Pricing tab for current prices; paid Apify plans get lower rates.

### FAQ

**How many projects can one run return?** One search is capped by Kickstarter at 2,400 projects (200 pages of 12). Bigger runs are split by category and sort order and de-duplicated, but the whole 690,000-project history is not guaranteed in one run; use filters and several runs.

**Are creators included?** No. Creator names and profile links are deliberately left out.

**Why does a run sometimes slow down?** Kickstarter occasionally challenges automated traffic. The Actor retries with backoff and switches to residential proxies by itself; if it still cannot get through it stops and keeps everything saved so far.

**Is `country` the creator's country?** It is the project's country of origin as listed by Kickstarter.

### Use cases

Crowdfunding market research, trend and category tracking, competitor and pricing analysis, finding successful campaigns by niche, ecommerce product scouting.

### En espanol

Extrae proyectos de Kickstarter: nombre, descripcion, categoria, ubicacion, meta de recaudacion, monto recaudado, patrocinadores, porcentaje financiado, estado, staff pick, fechas e imagen. Filtros por palabra clave, categoria, estado, pais y nivel de financiamiento. No se recopilan nombres ni perfiles de creadores. Consulta la pestaña Pricing para ver los precios actuales; los planes de pago de Apify tienen tarifas más bajas.

# Actor input Schema

## `query` (type: `string`):

Keyword search over project titles and blurbs (e.g. `board game`, `e-bike`, `mechanical keyboard`). Leave empty to browse everything.

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

Top-level Kickstarter categories (OR-ed). Leave empty for all categories.

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

Kickstarter category or sub-category ids, e.g. `[28]` = Product Design, `[34]` = Tabletop Games. Added to the categories above.

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

Which projects to list. `all` includes every state.

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

Ordering of the results.

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

Only projects marked `Project We Love`.

## `countries` (type: `array`):

2-letter country codes of the project's origin (`US`, `GB`, `DE`...). Applied while reading results, so very narrow filters need more requests.

## `minPercentFunded` (type: `number`):

Keep only projects funded at least this much (100 = reached its goal).

## `minBackers` (type: `integer`):

Keep only projects with at least this many backers.

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

Stop after this many projects. One search yields up to 2,400 projects (200 pages of 12); larger runs are split automatically by category and sort order.

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

Apify datacenter proxy by default; the Actor switches to residential proxies by itself if Kickstarter's Cloudflare blocks it.

## Actor input object example

```json
{
  "query": "",
  "categories": [],
  "categoryIds": [],
  "state": "live",
  "sort": "magic",
  "staffPicksOnly": false,
  "countries": [],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All records collected during the run

# 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 = {
    "query": "",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("fabrikit/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 = {
    "query": "",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("fabrikit/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 '{
  "query": "",
  "maxItems": 50
}' |
apify call fabrikit/kickstarter-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fabrikit/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/jAsViaEPOmr3B3H8P/builds/arhcPRPSoJKzvOI0x/openapi.json
