# Changelog of Product Hunt Scraper — Bulk CSV Export & API (`apivault_labs/producthunt-scraper`) Actor

- **URL**: https://apify.com/apivault_labs/producthunt-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/apivault_labs/producthunt-scraper.md

## Changelog

### \[1.1] — 2026-05-22

#### Added — 7 new features + 2 new modes

**New modes (require PH API credentials):**

- 🧑‍💻 **`maker` mode** — fetch all products by a specific PH username. Returns full product list with `makerProfile` attached to each record.
- 🏷️ **`topic` mode** — top products in a category (AI, Developer Tools, Productivity, etc.). Configurable sort: VOTES / NEWEST / FEATURED.

**New derived signals (always computed, no API needed):**

- `daysSinceLaunch` — age of the product in days
- `isNewProduct` — true if launched in last 30 days
- `upvoteVelocity` — upvotes per day since launch (growth rate signal)
- `engagementRate` — (comments + reviews) / upvotes (community engagement)
- `techStackSignals[]` — detected tech categories from description/tagline: AI/ML, No-code, API, SaaS, Mobile, Chrome Extension, Open Source, Productivity, Design, Analytics, Security, E-commerce, Marketing, Finance, Education, Health, Video, Writing, DevOps, Database
- `sentimentScore` — simple -1.0 to 1.0 sentiment from description
- `maturityTier` — new / early / growing / popular / viral (by upvotes)
- `hasSocialProof` — true if reviews ≥ 5 AND rating ≥ 4.0
- `pricingTier` — free / freemium / subscription / paid / unknown

**New optional feature:**

- 📊 **`includeCompetitorAnalysis`** — adds one extra summary record comparing all scraped products:
  - avgUpvotes, avgRating, avgPopularityScore, avgUpvoteVelocity, avgEngagementRate
  - topByUpvotes\[], topByRating\[], fastestGrowing\[]
  - commonTechStack\[], pricingDistribution
  - newProducts count, featuredProducts count, withSocialProof count

#### Tested on production

- Midjourney: 3500 upvotes, maturityTier=viral, techStackSignals=\[AI/ML, Writing], popularityScore=90
- ChatGPT: 179 upvotes, maturityTier=growing, engagementRate=3.73, hasSocialProof=True
- Competitor analysis: avgUpvotes=1232, commonTechStack=\[AI/ML×2, Writing×2]

### \[1.0] — 2026-05-22

#### Added — Major expansion

**New primary backend: ProductHunt GraphQL API**

- Direct GraphQL queries to `producthunt.com/frontend/graphql`
- Direct API path for most requests — faster and more reliable
- Rendering-engine fallback kept for edge cases

**New fields (vs v0.0):**

- `productId` — PH internal ID
- `slug` — URL slug
- `productUrl` — canonical PH URL
- `commentsCount` — number of comments
- `topics[]` — structured list (was plain string)
- `topicSlugs[]` — topic slugs for filtering
- `topicsStr` — comma-separated string (backward compat)
- `makers[]` — structured list with name, username, headline, profileImage
- `makersStr` — comma-separated string (backward compat)
- `hunter` — `{name, username}` of the person who posted
- `gallery[]` — product screenshot/image URLs
- `badges[]` — PH badges (e.g. "Product of the Day")
- `isFeatured` — boolean
- `featuredAt` — ISO timestamp
- `createdAt` — ISO timestamp
- `dailyRank` — rank on launch day
- `weeklyRank` — rank for the week
- `popularityScore` (0-100) — composite of upvotes × rating
- `pricingType` — raw pricing enum (free/paid/freemium/subscription)
- `dataSource` — "graphql" or "rendered"

**New modes:**

- `leaderboard` — fetch top N products for any date (default: today)
- `search` — keyword search across all PH products

**Bug fixes:**

- Consistent error key (`inputUrl` in both success and error records)
- `topics` and `makers` now arrays, not plain strings
- URL validation before submitting
- `version: "1.0"` in actor.json

### \[0.0] — 2026-05-16

#### Added

- Initial release
- 13 fields: name, tagline, description, upvotes, reviews, rating, topics, makers, website, launchDate, followers, image, pricing
