Use cases / Product Hunt API, Website Contacts API, Crunchbase API
Startup deal sourcing
Last updated September 28, 2026. Response excerpts are recorded from the live API.
Who
Who runs this, and what for
| Team | What they decide with it |
|---|---|
| Venture investors and scouts | Which new companies to contact this week, before other investors do. |
| Partnerships and BD teams | Which new products to integrate with or partner with. |
| Sales teams selling to startups | Which newly launched companies to reach while they are building their stack. |
Pipeline
The calls, step by step
01Read yesterday's leaderboard
Launches for a date returns the day's ranked launches with votes, comments, topics, and the launch URL. Yesterday's board has final ranks; today's is still moving.
GET /v1/launches?date=2026-09-23&period=daily · results.0
{ "rank": 1, "daily_rank": 1, "weekly_rank": 4, "monthly_rank": 20, "id": "1256789", "name": "Solid", "tagline": "Agents with their own computers, accounts, and budgets.", "slug": "solid-9", "url": "https://www.producthunt.com/posts/solid-9", "product": { "id": "1105902", "slug": "solid-3", "url": "https://www.producthunt.com/products/solid-3" }, "votes": 456, "launch_day_votes": 435, "comments": 46, "topics": [ { "name": "Productivity", "slug": "productivity" }, { "name": "Artificial Intelligence", "slug": "artificial-intelligence" } ], "launched_at": "2026-09-23T00:01:00-07:00" }Recorded response. Live values differ. 02Open each launch you keep
Product returns the website, makers, and hunter for the launch, with profile links. Pass the launch's /posts/ URL so the makers are the ones for that launch.
GET /v1/launches/product?slug=https%3A%2F%2Fwww.producthunt.com%2Fposts%2Fsolid-9 · product
{ "id": "1105902", "name": "Solid", "tagline": "Agents with their own computers, accounts, and budgets.", "slug": "solid-3", "url": "https://www.producthunt.com/products/solid-3", "website": "https://solid.tech", "votes": 456, "rating": 4.6, "hunter": { "name": "Zac Zuo", "username": "zaczuo", "headline": "Flowtica & AI Frontiers", "url": "https://www.producthunt.com/@zaczuo", "avatar": null }, "makers": [ { "name": "Riley S", "username": "riley_ss", "headline": "A Hacker", "url": "https://www.producthunt.com/@riley_ss", "avatar": null }, { "name": "Trevor Keith", "username": "tkeith", "headline": "Founder of Solid", "url": "https://www.producthunt.com/@tkeith", "avatar": null } ], "topics": [ { "name": "Productivity", "slug": "productivity" }, { "name": "Artificial Intelligence", "slug": "artificial-intelligence" } ], "alternatives": [ { "name": "Base44", "slug": "base44", "url": "https://www.producthunt.com/products/base44", "tagline": null, "logo": null, "rating": null, "reviews": null } ], "media": [ { "type": "video", "platform": "youtube", "video_id": "4zCqr3HkpCY", "url": "https://www.youtube.com/watch?v=4zCqr3HkpCY", "image": null } ], "launch": { "slug": "solid-9", "url": "https://www.producthunt.com/posts/solid-9", "votes": 456, "launch_day_votes": 435, "daily_rank": 1, "comments_count": 46, "pricing": "free_options" } }Recorded response. Live values differ. 03Add contacts and Crunchbase facts
The Website Contacts API reads the product's site for emails and social profiles. Crunchbase has no search, so try the product name as the permalink and keep the profile only when its website matches.
GET /v1/organization?engine=crunchbase&permalink=stripe · organization
{ "name": "Stripe", "permalink": "stripe", "url": "https://www.crunchbase.com/organization/stripe", "legal_name": "Stripe, LLC.", "website": "https://stripe.com", "operating_status": "active", "company_type": "for_profit", "ipo_status": "private", "employee_range": "5001-10000", "rank": 51, "headquarters": { "city": "South San Francisco", "region": "California", "country": "United States", "continent": "North America" }, "funding": { "num_rounds": 25, "last_funding_type": "secondary_market", "num_investors": 74 }, "founders": [ { "name": "John Collison", "permalink": "john-collison" }, { "name": "Patrick Collison", "permalink": "patrick-collison" } ], "similar_companies": [ { "name": "Checkout.com", "permalink": "checkout-com" }, { "name": "Nuvei", "permalink": "nuvei" } ], "locked_fields": [ "founded_on", "funding_total", "last_funding_at" ] }Recorded response. Live values differ.
Code
A script to start from
deal_flow.py
# Daily deal flow: yesterday's top Product Hunt launches in chosen topics,
# each with its makers, website contacts, and Crunchbase profile if one exists.
import datetime, os, re, requests
from urllib.parse import urlparse
from zoneinfo import ZoneInfo
API = "https://api.clair.im"
HEADERS = {"Authorization": f"Bearer {os.environ['CLAIR_API_KEY']}"}
TOPICS = {"artificial-intelligence", "developer-tools", "fintech"}
def get(path, **params):
r = requests.get(f"{API}{path}", headers=HEADERS, timeout=90, params=params)
r.raise_for_status()
return r.json()
day = (datetime.datetime.now(ZoneInfo("America/Los_Angeles")) - datetime.timedelta(days=1)).date()
board = get("/v1/launches", date=day.isoformat(), period="daily")
for launch in board["results"][:20]:
if not TOPICS & {t["slug"] for t in launch["topics"]}:
continue
product = get("/v1/launches/product", slug=launch["url"])["product"]
makers = ", ".join(m["name"] for m in product["makers"])
print(f"#{launch['daily_rank']} {launch['name']}: {launch['tagline']} ({launch['votes']} votes)")
print(f" makers: {makers or 'not listed'}")
if product["website"]:
site = get("/v1/contacts", domain=urlparse(product["website"]).hostname, pages=3)
linkedin = next((s["url"] for s in site["social"] if s["network"] == "linkedin"), None)
print(f" {product['website']} {[e['value'] for e in site['emails']][:2]} {linkedin or ''}")
# Crunchbase has no search: try the product name as the permalink.
permalink = re.sub(r"[^a-z0-9]+", "-", launch["name"].lower()).strip("-")
try:
org = get("/v1/organization", engine="crunchbase", permalink=permalink)["organization"]
if org["website"] and urlparse(org["website"]).hostname == urlparse(product["website"] or "").hostname:
print(f" Crunchbase: {org['employee_range']} employees, {org['funding']['num_rounds']} rounds")
except requests.HTTPError:
pass # no profile under that name
Set CLAIR_API_KEY to a key subscribed to the Product Hunt API and Website Contacts API and Crunchbase API. Each call is one request against that API's monthly quota.
Cost
What it costs per month
| Schedule | Requests | Plan | Per month | Per 1,000 |
|---|---|---|---|---|
| Daily, 10 launches kept30 leaderboards and 300 product pages, plus 300 contact and 300 Crunchbase lookups. | 930 | Pay as you go + Pay as you go + Pay as you go | $11.04 | $11.87 |
| Daily, 5 launches kept, no Crunchbase30 leaderboards, 150 products, 150 contact lookups. | 330 | Pay as you go + Pay as you go | $4.10 | $12.42 |
| Weekly board, 25 launches kept4 weekly boards, 100 products, 100 of each lookup. | 304 | Pay as you go + Pay as you go + Pay as you go | $3.64 | $11.97 |
Limits
What to plan for
- Most new launches have no Crunchbase profile yet, and names collide: check that the profile's website matches before trusting it. A 404 means no profile under that permalink.
- Crunchbase hides total funding and founding dates from signed-out visitors; they are listed in locked_fields, not returned.
- A launch's rank reflects Product Hunt votes, which favour consumer and developer tools. It is a signal of attention, not of traction.
FAQ
Common questions
Why yesterday's board and not today's?
Product Hunt days run on Pacific time and votes keep coming in all day. Yesterday's ranks are final.
Can I filter by topic on the request?
Yes: topic keeps launches with that topic, from the one page fetched. Each launch also lists its topics for your own filtering.
How do I reach the makers?
Product returns each maker's name and Product Hunt profile. The company's published emails and LinkedIn come from the contacts lookup.
Run it on your own products
200 requests a month free on each API, no card. Enough to run the pipeline on a short list before choosing a plan.
Bloomberg News API
Associated Press API
Glassdoor API
Greenhouse Jobs API

Crunchbase API
Website Contacts API