What the Indiegogo scraper collects
Scrapes indiegogo.com project search listings, individual campaign pages and their reward tiers into JSON or CSV. Rows are read from the site's own JSON rather than the rounded card text, so funds raised, backers, goals and campaign dates come out exact.
Project search
Input: Nothing, or a project search URL with filtersOne row per campaign, 24 per page: funds raised, currency, goal, percent funded, backers, followers, creator, campaign dates and phase.
Campaign page
Input: An Indiegogo campaign URLOne row per campaign with everything from search plus the ISO 4217 currency, campaign day, stretch-goal count, reward count and published date.
Reward tiers
Input: An Indiegogo campaign URLOne row per reward tier: price, original price, 30-day lowest price, discount, remaining stock, purchased count and estimated delivery.
From zero to Indiegogo data in 3 steps
Install
Clone the repository and install one browser engine. Python 3.9+.
$ git clone https://github.com/2scraper/indiegogo-scraper.git && cd indiegogo-scraper $ pip install -r requirements.txt -r requirements-playwright.txt $ playwright install chromium $ python3 playwright_scraper.py --pages 3
Run a scraper
Pick what you need and run it. Every flag is documented in the README.
$ python3 playwright_scraper.py --pages 5 --sort most-funded --format both$ python3 playwright_scraper.py --mode campaign --url https://www.indiegogo.com/en/projects/gpdhk/gpd-win-max-3-handheld-gaming-laptop$ python3 playwright_scraper.py --mode rewards --url https://www.indiegogo.com/en/projects/gpdhk/gpd-win-max-3-handheld-gaming-laptopGet structured data
Rows land in JSON or CSV (
--format), with a.meta.jsonsidecar recording status, pages fetched and why the run stopped.
Indiegogo data fields
35 columns per row in a predictable schema. The most useful ones:
| Field | What it holds |
|---|---|
sku | Indiegogo project id |
title | Campaign title |
url | Campaign URL |
price | Funds raised, exact from the site's JSON |
currency | Campaign currency; null when the symbol is ambiguous (kr), never defaulted |
goal | Funding goal; null for campaigns that publish none |
pct_funded | Percent of goal raised |
backers_count | Number of backers, exact rather than "3.4k" |
followers_count | Number of followers |
creator | Campaign creator |
campaign_end | Absolute campaign end time (UTC) |
days_left | Days remaining |
phase_label | The site's own status label, e.g. Express crowdfunding |
platform | indiegogo or gamefound — which platform hosts the campaign |
category_code | Locale-independent numeric category id |
tags | Campaign tags |
[
{
"source": "indiegogo.com",
"scraped_at": "2026-09-17T08:42:12.083024+00:00",
"url": "https://www.indiegogo.com/en/projects/gpdhk/gpd-win-max-3-handheld-gaming-laptop",
"sku": "442684",
"title": "GPD WIN Max 3 Removable Battery High Refresh Rate OLED Handheld Gaming Laptop",
"image_url": "https://cdn.images.indiegogo.com/projectimage/projects/442684/54401a1d-1a31-4c6c-a03d-d…",
"price": 6569871.0,
"currency": "HKD",
"category": "Productivity",
"price_source": "api",
"platform": "indiegogo",
"category_code": 50,
"sort": "default",
"page": 1,
"position": 1,
"creator": "GPD HK",
"creator_url": "https://www.indiegogo.com/creators/gpdhk",
"goal": null,
"pct_funded": null,
"backers_count": 337,
"followers_count": 1066,
"campaign_start": "2026-09-02T02:00:00Z",
"campaign_end": "2026-10-17T02:00:00Z",
"days_left": 29,
"phase_label": "Express crowdfunding",
"phase": 10,
"outcome_code": 1,
"funded_in_seconds": null,
"short_description": "GPD WIN Max 3 OLED Handheld Gaming PC AMD Ryzen™ AI Max+ 395 / 388.\nAMD Radeon 8060S iG…",
"tags": [
"computers",
"laptops",
"pc"
],
"currency_iso_source": null,
"campaign_day": null,
"stretch_goal_count": null,
"reward_count": null,
"published_date": null
},
{
"source": "indiegogo.com",
"scraped_at": "2026-09-17T08:42:12.083124+00:00",
"url": "https://gamefound.com/en/projects/iv-studio/tend-expansions",
"sku": "11718",
"title": "Tend: Hive & Cellar Expansions",
"image_url": "https://imgcdn.gamefound.com/projectimage/projects/11718/343ee917-ecf4-4e7f-b4cc-869430…",
"price": 642408.53,
"currency": "USD",
"category": "Board & card games",
"price_source": "api",
"platform": "gamefound",
"category_code": 11,
"sort": "default",
"page": 1,
"position": 2,
"creator": "IV Studio",
"creator_url": "https://gamefound.com/creators/iv-studio",
"goal": 50000.0,
"pct_funded": 1284.82,
"backers_count": 3420,
"followers_count": 11594,
"campaign_start": "2026-09-15T15:00:00Z",
"campaign_end": "2026-10-07T22:00:00Z",
"days_left": 20,
"phase_label": "Crowdfunding",
"phase": 10,
"outcome_code": 0,
"funded_in_seconds": 645,
"short_description": "Two new expansions for the highly-acclaimed & strategic cozy farming game.",
"tags": [
"Strategy",
"SummerFeast26",
"SummerFeast2026",
"… 1 more"
],
"currency_iso_source": null,
"campaign_day": null,
"stretch_goal_count": null,
"reward_count": null,
"published_date": null
}
]First 2 of 24 rows from a real run — sample_output.json. Long values shortened here.
Handles what breaks naive Indiegogo scrapers
Real pagination, not ?page=2
?page=2 silently serves page 1 again. The scraper pages through the site's own POST search API with a 0-based pageIndex from inside the cleared browser session, and refuses to build ?page=N URLs at all.
Gamefound rows labelled
indiegogo.com search mixes in campaigns hosted on gamefound.com. Every row carries a platform column, and --platform indiegogo filters to Indiegogo-hosted campaigns.
Exact numbers, honest nulls
Funds, backers and end dates come from the API instead of rounded card text. A missing goal stays null, and the API's misleading fundedInSeconds = 0 becomes null.
The site's result cap recorded
Unfiltered searches stop at 416 pages × 24 rows. The sidecar records total_results, pages_available and capped_by_site, and diff_runs.py refuses to compare runs under different --sort orders.
Scraping infrastructure included
The same tested core runs every 2scraper repository, so the hard parts work the same way on every site.
CAPTCHA handling
Detects the challenge a page really serves and, with a 2Captcha key, solves it only when it blocks the data — a capped number of solves per page.
Proxy rotation
Single proxy or a pool from a file, rotated on blocks with a fresh browser per exit. Credentials stay out of argv and logs.
Fingerprints
Optional complete device identity from the 2Captcha Fingerprint API — user agent, client hints, locale and timezone that agree with each other.
Scraping Browser API
Point --cdp-endpoint at a managed Chromium with its own exit country — no browser infrastructure to run yourself.
Honest run metadata
Every run writes a .meta.json sidecar and distinct exit codes: complete, blocked, empty and partial are never confused, and a failed run never overwrites good data.
Diff two runs
diff_runs.py compares two complete Indiegogo snapshots by id — new, removed and changed rows for monitoring.
What teams do with Indiegogo data
Crowdfunding market research
Track which categories and campaigns raise the most, with exact funds raised, goals and percent funded.
Campaign performance monitoring
Follow backers, followers and funds raised for selected campaigns day by day with diff_runs.py.
Reward pricing analysis
Compare reward tier prices, discounts, 30-day lowest prices and remaining stock across campaigns.
Product launch scouting
Find new hardware and gadget campaigns early with --sort newest and category filters.
Free to run. Pay only for what the site requires.
Runs with no key, proxy or account
A plain HTTP client gets Cloudflare's challenge on every route, but a local browser reads the site with no key, proxy or account, even from a datacentre address: 4 of 4 Playwright runs returned full results, and the GitHub-runner canary returned 72 rows over 3 pages (measured Sep 2026). When the challenge appeared it cleared itself on the next navigation. Residential proxies add volume and a chosen country, the Scraping Browser API a managed browser, and the 2Captcha Scraper API a page-1 read with no local browser; the Turnstile solving path is implemented in case the challenge stops clearing itself.
Optional 2Captcha services — captcha solving, the Scraping Browser API, residential proxies and fingerprints — work behind one key.
Good to know
- Unfiltered searches are capped by the site at 9,984 rows.
- Selenium cannot use an authenticated --cdp-endpoint or an authenticated proxy; use Playwright or pyppeteer for those.
- scraper_api_client.py reads only page 1 of a search, because later pages need the browser session.
2scraper vs. hosted scraper APIs
| 2scraper | Typical hosted API | |
|---|---|---|
| Code | Open source, MIT — read and patch it | Closed |
| Cost | Free; optional services billed only when used | Subscription or per request / per result |
| Runs on | Your machine, server or CI | The vendor's infrastructure |
| Output | JSON/CSV files + run metadata | API responses |
| When the site changes | Fix it yourself or open an issue / PR | Wait for the vendor |
Indiegogo scraper FAQ
Do I need a proxy or a 2Captcha account to scrape Indiegogo?
No, for most use. A local headless Chromium read the site from datacentre addresses with no key or proxy; HTTP clients like curl are refused, so use a browser engine.
How many results can one search return?
An unfiltered search is capped by the site at 416 pages of 24, or 9,984 rows. Narrower queries, such as a search term, are not capped.
Why are some rows from Gamefound?
indiegogo.com runs on the Gamefound platform and its search includes Gamefound-hosted campaigns. The platform column marks them and --platform indiegogo filters them out.
Does the sort order matter?
Yes. Because results are capped, the sort decides which campaigns end up in your file, so sort is recorded on every row and diff_runs.py refuses to compare runs with different sorts.
Which languages are supported?
Nine locales as path prefixes: en, it, fr, de, pl, es, cs, pt and zh. category and phase_label are display text, so group by category_code across locales.
Is scraping Indiegogo legal?
It reads public listing and campaign pages. Public data scraping is generally lawful, but follow Indiegogo's terms and the law where you operate, and do not republish personal data.