# Changelog of Kickstarter Projects Scraper - Search Campaigns & Funding (`blackfalcondata/kickstarter-com-scraper`) Actor

- **URL**: https://apify.com/blackfalcondata/kickstarter-com-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/blackfalcondata/kickstarter-com-scraper.md

## Changelog

All notable changes to this Actor are documented here.

### \[Unreleased]

#### Added

- New search inputs: `queries`, `categories`, `states` (live, successful, failed, canceled, upcoming, all), `sort`, `staffPicksOnly`, `country`, `locationWoeid`.
- New result filters: `minPercentFunded`, `minBackers`, `minPledgedUsd`, `launchedWithinDays`. `maxResults` counts delivered rows.
- Empty input now browses live projects instead of stopping. Start URLs now run next to your search terms instead of replacing them.
- New **Project URLs** (`projectUrls`): each URL returns exactly that creator and project, always with the detail groups; a wrong creator is reported, not delivered.
- New option **Include project details** (`fetchDetails`): `rewards`, `rewardsCount`, `addOnsCount`, `updatesCount`, `commentsCount`, `faqCount`, `tags`, creator biography, websites and history.
- `fetchStory` now also adds `storyText`, `risks`, `faqs` and `environmentalCommitments`.
- Incremental runs: each combination of search terms, filters and project URLs keeps its own saved state, and with project details on, a change in rewards, counts, tags or creator history reports the project as `UPDATED`. Runs that use none of the new options keep their existing state.
- Customer-visible logs for the new project requests never include raw technical error text.
- New option **Qualify creators by payment** (`qualifyByPayment`): checks the creator-site pages the email search already reads for payment processors and shop platforms and adds `takesPayments`, `paymentProcessors`, `stripeLiveKey` and `paymentConfidence` (no extra requests). It turns on **Find creator contact emails**, which now also includes the project details.

#### Fixed

- A browser session that stalls on the site check is now replaced after 90 seconds instead of holding the run for several minutes, so small runs finish in time.
- The 90-second limit now also covers a browser that is slow to start or a check request that hangs, so a stuck session can no longer push a small run past its time limit.
- A page stuck on the site check is now reloaded after 30 seconds instead of 60, so the reload that usually opens it has time to finish; small runs that previously failed with "Could not read results from the source" now complete.
- Closing a stuck browser session no longer delays its replacement, and a request cancelled while the browser is still starting can no longer leave a stray browser running in place of the working one.
- Project URLs: are now fetched in batches until `maxResults` is reached, instead of fetching every listed project before the limit applies.
- Project URLs: when Kickstarter answers with an error instead of project data, the project is reported as not fetched (and a run where nothing could be read fails with `[KIC-2001]`) instead of "project not found".
- Project URLs: when Kickstarter returns a project but reports an error for some of its fields (for example rewards), the project is no longer delivered with those fields empty. Incremental runs leave it out (so its saved state is unchanged and no false `UPDATED` is reported); other runs deliver the base listing with `detailFetched: false`. A malformed answer for a project now counts as a failed request instead of "not found" or "creator mismatch".
- Project URLs in incremental runs: a change in rewards, counts, tags or creator history is now reported as `UPDATED` even without `fetchDetails` (project URLs always include those fields). **The first incremental run with project URLs after this update reports those projects once as `UPDATED`.**
- Incremental runs: notifications stop immediately if a newer run takes over while they are being sent; no further message part or channel is sent.
- Incremental runs: a run that stops at the page limit, hits Kickstarter's discover depth (about page 200) or cannot read the total number of matches is now treated as incomplete, so no project is wrongly marked as gone.
- Incremental runs: with `emitExpired` on, projects that disappeared are delivered as `EXPIRED` rows, and a complete scan that finds nothing now updates the saved state.
- Incremental runs: the run lock is renewed while the run works, checked before every write, notification and state save, and always released (also after a failure). A newer run's lock is never deleted.
- A run where every result page fails now fails with `[KIC-2001]` instead of reporting success with no results. Partial failures stay successful with a warning.
- `maxResults` now counts delivered rows, so unchanged projects in a repeat run no longer use up the limit.
- Change detection now also covers backers, percent funded, the story/email enrichment and the output settings. **The first incremental run after this update reports every known project once as `UPDATED`.**
- Chat notifications (Telegram, Slack, Discord, WhatsApp) show the project name, link and funding progress.
- With several searches, each result now carries the query of the search that found it.
- `descriptionFormat` now also controls the campaign story (`story` Markdown / `storyHtml`).
- When Kickstarter does not report a total but says another page exists, paging continues up to `maxPages`.
- Customer-visible logs no longer include raw technical error text.
- Runs no longer fail with `[KIC-2001]` on the first result page while the browser session is still starting up.

### \[0.1.0] — 2026-11-05

#### Added

- New option **Include campaign story** (`fetchStory`): adds each project's full campaign story as Markdown and HTML.
- New option **Find creator contact emails** (`enrichEmails`): adds the websites the creator lists, the emails published in the story or on the creator's own website, and the best contact email.

#### Fixed

- Searches no longer fail with an access error when Kickstarter shows its browser check: results are now read through a real browser session.
- Each result now carries its search rank (`position`), the result page it came from and the total number of matches, which were previously always empty.

Initial release.

#### Added

- Scrape products from kickstarter.com.
