# Indiegogo Scraper (`crawlerbros/indiegogo-scraper`) Actor

Scrape Indiegogo crowdfunding campaigns with funding goal, raised amount, backers, currency, deadline, creator, category, tags, image, and discovery feeds (trending, ending soon, by category, search).

- **URL**: https://apify.com/crawlerbros/indiegogo-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 20 total users, 5 monthly users, 98.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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

## Indiegogo Scraper

Scrape Indiegogo crowdfunding campaigns at scale — discover trending or ending-soon campaigns, browse by category, search by keyword, or fetch one or more campaigns by URL/slug. Returns funding goal, raised amount, backers, currency, deadline, creator, category, tags, image, and the full project story.

No login required. No cookies. Works out of the box.

### Use cases

- Track competitor crowdfunding campaigns in your niche
- Build leaderboards of the most-funded campaigns by category
- Monitor new launches in tech, design, film, music, and more
- Power crowdfunding analytics dashboards
- Build email outreach lists of founders raising on Indiegogo
- Study what makes a campaign succeed (goal vs. raised vs. backers)

### Modes

| Mode | What it does |
|---|---|
| `discoverTrending` | Popular campaigns right now (default) |
| `discoverEndingSoon` | Campaigns about to close — fund-now urgency |
| `discoverNewest` | Newest campaigns |
| `discoverMostFunded` | Highest raised amount |
| `discoverCategory` | Browse a category (Tech, Creative, Community, Gaming) |
| `searchCampaigns` | Free-text keyword search |
| `byCampaign` | One or more campaign slugs (`witchcraft-the-lanterne-of-light`) |
| `byUrl` | One or more full Indiegogo campaign URLs |

### Input

| Field | Type | Description |
|---|---|---|
| `mode` | enum | What to scrape (see modes table). |
| `query` | string | Search keyword (mode=searchCampaigns). |
| `category` | enum | `tech`, `creative`, `community`, or `gaming`. |
| `subCategory` | enum | Specific tag (audio, film, drones, gaming, etc.). |
| `sortBy` | enum | `trending`, `newest`, `ending_soon`, `most_funded`. |
| `projectType` | enum | `any`, `campaign` (default — live crowdfunding), `marketplace`. |
| `status` | enum | `any`, `live`, `ended`, `in_demand` (post-campaign sales). |
| `slugs` | list | Campaign slugs (mode=byCampaign). |
| `urls` | list | Full Indiegogo URLs (mode=byUrl). |
| `minBackers` | int | Drop campaigns with fewer backers than this. |
| `minRaised` | int | Drop campaigns that raised less than this (native currency). |
| `fundedOnly` | bool | Drop campaigns that haven't reached their goal. |
| `maxItems` | int | Hard cap on emitted records (1-1000). |
| `autoEscalateOnBlock` | bool | Auto-engage Apify Proxy on Cloudflare 403. |

### Example input

```json
{
  "mode": "discoverTrending",
  "category": "tech",
  "maxItems": 10
}
```

```json
{
  "mode": "searchCampaigns",
  "query": "headphones",
  "sortBy": "most_funded",
  "fundedOnly": true,
  "maxItems": 50
}
```

```json
{
  "mode": "byUrl",
  "urls": [
    "https://www.indiegogo.com/projects/witchcraft-the-lanterne-of-light"
  ]
}
```

### Output

Each record is an Indiegogo campaign with these fields (`null`/empty values are omitted):

```json
{
  "platform": "indiegogo",
  "id": 244299,
  "slug": "Witchcraft-The-Lanterne-of-Light",
  "name": "Witchcraft: The Lanterne of Light",
  "shortDescription": "When a paranormal crew discovers a cursed lantern...",
  "url": "https://www.indiegogo.com/en/projects/andrewpierson-37875854/witchcraft-the-lanterne-of-light",
  "imageUrl": "https://cdn.images.indiegogo.com/...",
  "campaignGoal": 5000,
  "fundsGathered": 14230.0,
  "backersCount": 16,
  "followersCount": 54,
  "currencySymbol": "$",
  "currencyCode": "USD",
  "campaignStart": "2026-05-01T14:00:00Z",
  "campaignEnd": "2026-06-16T13:00:00Z",
  "publishedDate": "2026-04-24T03:55:18.137Z",
  "campaignDay": 8,
  "fundedAt": "2026-05-01T21:10:46.083Z",
  "phase": 10,
  "phaseLabel": "live",
  "categoryId": 56,
  "categoryName": "Film",
  "tags": ["horror", "indie", "film"],
  "creator": {
    "id": 1821148,
    "name": "Andrew Pierson",
    "urlName": "andrewpierson-37875854",
    "url": "https://www.indiegogo.com/creators/andrewpierson-37875854"
  },
  "creatorName": "Andrew Pierson",
  "creatorUrlName": "andrewpierson-37875854",
  "stretchGoals": [
    {"goalAmount": 10000, "title": "Goal #1: Production starts"}
  ],
  "tabUrls": {
    "project": "https://www.indiegogo.com/en/projects/.../witchcraft...",
    "rewards": "https://www.indiegogo.com/en/projects/.../rewards",
    "comments": "https://www.indiegogo.com/en/projects/.../comments",
    "updates": "https://www.indiegogo.com/en/projects/.../updates"
  },
  "storyHtml": "<div><b>WITCHCRAFT: THE LANTERNE OF LIGHT...",
  "storyText": "WITCHCRAFT: THE LANTERNE OF LIGHT A Feature Film...",
  "scrapedAt": "2026-05-09T20:51:08.123456+00:00"
}
```

Search/discover cards include the same core fields. Detail records (mode=`byUrl` / `byCampaign`) additionally include `storyHtml` / `storyText` and `tabUrls`.

### FAQs

**Q: Do I need cookies, an API key, or a proxy?**
A: No. The actor works directly from datacenter IPs via TLS impersonation (curl\_cffi Chrome 131). If Indiegogo's Cloudflare blocks your run, the actor automatically escalates to Apify Proxy (RESIDENTIAL on second block).

**Q: Why don't I see updates / comments?**
A: Indiegogo loads its Updates and Comments tabs via XHR after the campaign page renders, so neither the SSR HTML nor a public API exposes them. The actor surfaces the tab URLs (`tabUrls.updates`, `tabUrls.comments`) so you can navigate to them in a browser, but it does not paginate update/comment content. Story HTML, goal, raised, backers, dates, creator, category and stretch-goals are all returned.

**Q: What does "InDemand" mean?**
A: After a campaign closes, the creator can re-list the product on Indiegogo's InDemand marketplace for ongoing pre-orders. We expose this via `status=in_demand` and `phase=40`.

**Q: Why does `currencyCode` sometimes differ from `currencySymbol`?**
A: Some campaigns are listed in currencies whose symbol overlaps with USD (`$` for USD, AUD, CAD, HKD). The numeric `currencyCode` is the authoritative ISO code.

**Q: How many results per page?**
A: Indiegogo's search/discover endpoint returns 12-24 cards per page; the actor paginates automatically up to `maxItems`.

**Q: Can I filter by language / country?**
A: Indiegogo does not expose locale-based filters in search. The actor ships English (`/en/projects/search`) by default. Add `language` / `country` to your input to request — currently the upstream API doesn't support it.

**Q: Why does my run sometimes return zero records?**
A: The most likely cause is an over-restrictive filter combo (e.g., `minBackers=10000 + minRaised=1000000 + fundedOnly=true`). Try with fewer filters first, then narrow.

### Limitations

- **Updates / comments are not extracted** (XHR-rendered, no SSR data; see FAQ above).
- **Campaign rewards** are summarised on the detail page but not paginated separately — the actor returns whatever is in the SSR.
- **Currency conversion** is not performed — `fundsGathered` is in the campaign's native currency.
- **Cloudflare blocks** are auto-escalated to Apify Proxy; if RESIDENTIAL is also blocked the run will surface a typed error record per failed URL.

# Actor input Schema

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

What to scrape.

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

Free-text keyword search. Required for `mode=searchCampaigns`.

## `category` (type: `string`):

Indiegogo top-level catalog category. Required for `mode=discoverCategory`; optional otherwise to filter by topic. Provide `subCategory` for a narrower filter (e.g., `film`, `audio`).

## `subCategory` (type: `string`):

Specific Indiegogo sub-category. If set, takes precedence over `category` (it's narrower).

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

Sort order for search and category browse.

## `projectType` (type: `string`):

Filter by project type. Indiegogo lists active crowdfunding campaigns plus marketplace post-campaign products.

## `status` (type: `string`):

Filter by campaign lifecycle phase.

## `slugs` (type: `array`):

Indiegogo campaign URL slugs (the part after `/projects/`, e.g. `witchcraft-the-lanterne-of-light`).

## `urls` (type: `array`):

Full Indiegogo campaign URLs (e.g. `https://www.indiegogo.com/projects/<slug>`).

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

Drop campaigns with fewer backers than this.

## `minRaised` (type: `integer`):

Drop campaigns that raised less than this (in the campaign's native currency).

## `fundedOnly` (type: `boolean`):

Drop campaigns that haven't reached their funding goal yet.

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

Hard cap on emitted records. Indiegogo serves 12-24 results per discovery page; the actor paginates as needed.

## `autoEscalateOnBlock` (type: `boolean`):

If true (default), the actor automatically engages Apify Proxy when it hits HTTP 403 / Cloudflare blocks from a raw datacenter IP. Set false to disable.

## `proxyGroups` (type: `array`):

Apify proxy groups to use when auto-escalating after a block. Empty = datacenter (default), then RESIDENTIAL fallback.

## Actor input object example

```json
{
  "mode": "discoverTrending",
  "category": "tech",
  "projectType": "campaign",
  "slugs": [],
  "urls": [],
  "fundedOnly": false,
  "maxItems": 10,
  "autoEscalateOnBlock": true,
  "proxyGroups": []
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset of all scraped Indiegogo campaign records.

# 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": "discoverTrending",
    "category": "tech",
    "projectType": "campaign",
    "fundedOnly": false,
    "maxItems": 10,
    "autoEscalateOnBlock": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/indiegogo-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 = {
    "mode": "discoverTrending",
    "category": "tech",
    "projectType": "campaign",
    "fundedOnly": False,
    "maxItems": 10,
    "autoEscalateOnBlock": True,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/indiegogo-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 '{
  "mode": "discoverTrending",
  "category": "tech",
  "projectType": "campaign",
  "fundedOnly": false,
  "maxItems": 10,
  "autoEscalateOnBlock": true
}' |
apify call crawlerbros/indiegogo-scraper --silent --output-dataset

```

## MCP server setup

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