Kickstarter Projects Scraper
Scrape Kickstarter projects by category, state, location or keyword. Get goal, pledged, backers, deadline and creator as clean JSON or CSV. No account needed.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
state,category,searchTerms(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.00092 per project = $0.92 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Project scraped | One Kickstarter project with its goal, pledged total and backer count. Refused filters stop the run and charge nothing. | $0.00092 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
state | Which projects to return. 'upcoming' means projects with a pre-launch page that have not started funding yet, so they have no goal, pledged total, backer count or deadline. Leave empty to search every state at once. | string |
category | A Kickstarter category. Use a section on its own ('games', 'technology', 'design') or a full path ('games/tabletop games', 'food/restaurants'). A category id also works. Anything that is not a real Kickstarter category is refused before the run spends anything - Kickstarter itself would silently ignore it and hand back every project instead. | string |
searchTerms | Words to search project pages for. Each term is searched in turn until the run reaches the row limit. Up to 20 per run. Leave empty to browse a category or state without a keyword. | array |
location | A place, written the way Kickstarter writes it: 'Berlin, Germany', 'London, UK', 'California', 'United Kingdom'. The name is looked up first, and every row is then checked to come from there. A bare woe_id number is also accepted, but rows cannot be checked against one. | string |
sortBy | How Kickstarter orders the results before paging. 'Magic' is its own default blend. Note that deep paging stops at 9,600 projects per search whichever order you pick, so the sort decides which 9,600 you get. | string |
fundingStatus | Filter by how far a project got towards its goal. | string |
goalRange | Filter by the funding goal, converted to US dollars. A project asking 100,000 JPY counts as about $626, not as $100,000. | string |
pledgedRange | Filter by how much a project has actually raised, converted to US dollars. | string |
staffPicksOnly | Return only projects Kickstarter's own team has picked out. | boolean |
searchUrls | Build the search you want on kickstarter.com/discover, then paste the address bar here. Where the URL and the form both set something, the URL wins, place included, and the form only fills in what the URL leaves out. A URL that names several project states, late pledge included, runs one search for each, and they share that URL's part of the row budget. Every setting in the URL is checked first. If one cannot be used exactly as it is, that URL is not searched, and a free note tells you which setting it was. | array |
maxItems | Total projects to return across everything you asked for. The budget is shared evenly between your search terms and pasted URLs. Keep it low while you are testing - you pay per row. | integer |
proxyUrls | Leave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port. | array |
What you get
A structured dataset — each result includes fields like:
searchLabelnameblurbcreatorNamecategoryNamestategoalpledgedcurrencypledgedUsdpercentFundedbackersCountdeadlineprojectUrlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Kickstarter Projects Scraper: goals, pledges and backers for any search on Kickstarter
Search Kickstarter the way its discover page does and get one row per project: what it asked for, what it raised, how many people backed it, when it closes, who made it and where they are. Every filter is checked before the search goes out, because Kickstarter quietly ignores a setting it does not recognise and hands back its whole catalogue instead. The one limit it cannot get round is Kickstarter's own ceiling of 9,600 projects per search, so a big category has to be narrowed.
| Input | A state, category, place, keywords or funding bands, or a pasted Kickstarter discover URL |
| Output | One row per project |
| Ceiling | 5,000 rows per run, 9,600 projects per search |
| Account needed | None |
| Price | $0.92 per 1,000 projects, flat on every plan |
🔍 What Kickstarter Projects Scraper does
Money arrives twice: in the project's own currency and in US dollars, converted at the rate Kickstarter applies. So a campaign in euros and one in dollars sort against each other correctly, and the goal and raised bands mean the same thing for every project. A 100,000 JPY goal counts as about $626, not $100,000.
Kickstarter answers a filter value it does not understand with a normal-looking page of everything. One letter is enough. In a test on 20 September, state=cancelled returned 683,846 projects in every state; canceled returned 67,077. So each value is checked first, and one that does not match stops the run with a free BAD_INPUT row naming what it accepts. The British "cancelled" is simply corrected.
Rows are checked again on the way out. A sub-category is only a hint on Kickstarter's side, and about one row in six belongs to a neighbouring category; those are dropped and not charged. A place you give is looked up first, then every row is checked to come from there.
Paste a search from kickstarter.com/discover and its settings go through the same checks. Where the URL and the form both set something, the URL wins, place included. Whatever the URL leaves out comes from the form, which starts with live and games/tabletop games filled in, so a URL with no state or category of its own still gets those two unless you clear them. A URL is searched exactly as it stands, once per state if it names several, or not at all: one carrying a setting that cannot be sent, like a custom goal range, is skipped, and a free BAD_INPUT row names that setting.
📥 What you give it
{
"state": "live",
"category": "games/tabletop games",
"fundingStatus": "funded",
"sortBy": "most_backed",
"maxItems": 100
}
| Field | Prefilled with | What it is |
|---|---|---|
state | live | live, successful, failed, canceled or upcoming. Empty searches every state at once. |
category | games/tabletop games | A section (games, technology, design), a full path (games/tabletop games), a category name or its id. 15 sections, 154 sub-categories. |
searchTerms | empty | Words to search for, up to 20, run one after another. Kickstarter searches the whole campaign page, not just the title. |
location | empty | A place the way Kickstarter writes it: Berlin, Germany, London, UK, California, United Kingdom. A bare woe_id number is accepted too, but rows cannot be checked against it. |
sortBy | magic | magic (Kickstarter's own default), popularity, newest, end_date, most_funded or most_backed. With the 9,600 ceiling, the sort decides which 9,600 you get. |
fundingStatus | empty | under_75, 75_to_100 or funded. |
goalRange | empty | under_1k, 1k_to_10k, 10k_to_100k, 100k_to_1m or over_1m, on the goal in US dollars. |
pledgedRange | empty | The same five bands, on what the project actually raised. |
staffPicksOnly | off | Only projects Kickstarter's own team picked out. |
searchUrls | empty | The address bar from a search on kickstarter.com/discover, up to 20. Its settings, place included, win over the form's. A URL that names several states, late pledge included, runs one search for each. |
maxItems | 100 | Total projects across everything, 1 to 5,000, shared evenly between your search terms and URLs. A URL with several states splits its share between them, and a project two of them find is charged once. Left out of an API call, it is 100. |
proxyUrls | empty | Optional. Your own servers, one per line as http://user:pass@host:port, if you want the traffic to leave through them. Leave it empty for a normal run. |
📤 What you get back
A real row from a real run on 30 September 2026, with the image link cut short:
{
"ok": true,
"charged": true,
"recordType": "project",
"searchLabel": "live projects in games/tabletop games",
"projectId": "837103376",
"name": "Stefan Feld City Collection 13: Orlando",
"blurb": "Manage your own Feldland theme park with new and unique mechanics.",
"creatorName": "Queen Games",
"categoryName": "Tabletop Games",
"categorySlug": "games/tabletop games",
"categoryId": 34,
"state": "live",
"goal": 10000,
"pledged": 76590,
"currency": "EUR",
"goalUsd": 11386.4,
"pledgedUsd": 87208.41,
"percentFunded": 765.9,
"backersCount": 462,
"deadline": "2026-10-12T19:00:00.000Z",
"launchedAt": "2026-09-29T14:25:27.000Z",
"createdAt": "2026-04-27T11:12:08.000Z",
"stateChangedAt": "2026-09-29T14:25:31.000Z",
"projectUrl": "https://www.kickstarter.com/projects/queen-games/stefan-feld-city-collection-troms",
"country": "DE",
"locationName": "Bonn, Germany",
"staffPick": true,
"isStaffSpotlight": false,
"hasVideo": true,
"imageUrl": "https://i.kickstarter.com/assets/055/310/891/41cb2cdf7e5f15b6eac0597a289530d9_original.jpg?...",
"creatorUrl": "https://www.kickstarter.com/profile/queen-games",
"resultPage": 1,
"totalMatches": 492,
"scrapedAt": "2026-09-30T02:30:00.710Z"
}
| Field | What it is |
|---|---|
goal, pledged, currency | In the project's own currency. The row above is in euros. |
goalUsd, pledgedUsd | The same two figures in US dollars, at the rate Kickstarter applies. Compare across currencies with these. |
percentFunded | Pledged as a share of the goal. It goes well past 100: the row above reads 765.9. |
backersCount | People, not pledges, when the row was read. It keeps moving on a live project. |
deadline, launchedAt, createdAt, stateChangedAt | ISO timestamps in UTC. On a closed project, deadline is when it closed. |
state | live, successful, failed or canceled. An upcoming project reads submitted or started, which is what Kickstarter calls it before launch. A project from a late pledge search reads successful. |
latePledges | true when a funded project is still taking pledges after its campaign ended. Every row from a late pledge search has it, and a project without it is left out of that search. |
categorySlug | The full path, like games/tabletop games. Split on the slash for the section. |
locationName, country | Where the creator says they are, and the project's registered country. They do not always agree. |
projectId | Kickstarter's own id. Use it to spot new projects between runs. |
searchLabel, totalMatches, resultPage | Which of your searches produced the row, how many matches Kickstarter reported for it, and the results page it sat on. |
On an upcoming project the goal, pledged, backer and funding fields are null rather than zero, because it has not started raising anything.
🧾 Reading the output
recordType alone will not do, because the free sample row says project too.
| Row | How to spot it | Charged |
|---|---|---|
| A project | charged: true, recordType: "project", no _sample field | yes |
| The sample row | _sample: true and charged: false. Written only when the input narrows nothing: no state, category, place, keyword, band, staff-pick switch or URL | no |
| A diagnostic row | _diagnostic: true, charged: false, recordType: "diagnostic", with an errorCode and plain error and details | no |
errorCode | What happened |
|---|---|
BAD_INPUT | A typed setting Kickstarter does not recognise, or a place it has no record of. The run stops before searching, and no rows are charged. A pasted URL with a setting that cannot be sent, or a link that is not a discover search, is skipped without searching it, and the rest of the run goes on. |
NO_RESULTS | A search matched nothing, or every row it returned failed the check. The same code carries three free notices: a search that hit the 9,600 ceiling, a place matched to the nearest one Kickstarter has, and a woe_id used unchecked. |
NETWORK | Kickstarter did not answer that search, or the place lookup failed. |
RATE_LIMITED | Kickstarter's rate limit stopped that search. Re-run it later. |
TIME_BUDGET | The run reached its time limit before that search started. |
CHARGE_ERROR | Some charges could not be recorded. The row gives the rows delivered and the rows charged. |
UNEXPECTED_ERROR | The run hit an error it did not expect. Nothing was charged for it. |
charged: true is what separates a real project from the sample and diagnostic rows, so filter on it, or drop every row carrying _sample or _diagnostic.
▶️ How to run it
1. Open Kickstarter Projects Scraper and click Try for free. 2. Pick a Project state and a Category, add Search terms or a Location if you want, or paste a search into Paste a Kickstarter discover URL. 3. Narrow it with Funding progress, Goal size or Amount raised if you like. 4. Set Maximum rows, low while you are testing. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.
💰 How much does it cost?
$0.92 per 1,000 projects, flat on every Apify plan: no volume tiers, no subscription. A hundred projects come to just over 9 cents.
Not charged: the sample row, every diagnostic row, projects that failed the filter check, a project two of your searches both found, and a run stopped for a bad setting. If you set a maximum charge for the run, it stops at the last row that fits.
💡 What people use it for
- Watching a category you sell into. Run
games/tabletop gamesdaily, compareprojectId, and you
see every new campaign the morning it launches.
- Working out a realistic goal before launching your own: pull a few hundred funded projects in your
category and look at goalUsd against backersCount.
- Finding creators to approach by place and category, with their project and profile links in the
row.
- Catching campaigns in their last stretch: sort by
end_dateand filter on75_to_100.
🚧 What it does not do
- No campaign page. No story text, reward tiers, updates, comments or backer list: only the
listing.
- No more than 9,600 projects per search. Narrow with a category, a place or a funding band to
reach the rest. A search that hits the ceiling says so in a free row.
- No keyword check on the rows. Kickstarter searches the whole campaign page, so a correct match
may not repeat your word in its name or blurb. Every other filter is checked.
- No contact details. The creator's public name and profile link, nothing more.
- No category added after 20 September 2026. The category list was read off Kickstarter then;
a newer one is rejected until the list is updated, rather than run as an unfiltered search.
- No live counter. Pledges and backers are a snapshot taken when the row was read.
🧭 Which funding and launch scraper do you need?
| If you want | Use |
|---|---|
| Kickstarter projects with goals, pledges and backers | This one |
| Product launches on Product Hunt, with upvotes and makers | Product Hunt Scraper |
| Y Combinator startups by batch, industry or status | Y Combinator Companies Scraper |
| US federal grants open to apply for | US Federal Grants Scraper |
❓ Questions people ask
Can I get the campaign text, rewards or backer list? No. This reads the project listing: the numbers, the dates, the category, the creator and the links.
Why did I get fewer rows than the match count? Kickstarter's sub-category results include projects from neighbouring categories, about one in six, and those are dropped before they are charged; the run log gives the count. And one search stops at 9,600 projects however many matches it reports, which a free row tells you.
What happens if I mistype a category or a state? The run stops before searching and writes a free row saying what it accepts. A mistake in a pasted URL skips just that URL. Neither falls back to a wider search.
How do I compare projects in different currencies? Use goalUsd and pledgedUsd. The goal and raised bands work on those figures too.
Can I run it on a schedule? Yes. Nothing is kept between runs, so the same input is safe to repeat. Compare projectId to see what is new since last time.
🆘 If something breaks
Open the Issues tab on the actor page. Send the input and the run ID; the BAD_INPUT or NO_RESULTS rows usually name the reason.