Search or browse collections
Search Product Hunt collections by name, or omit the query to browse the newest ones. Each collection carries its curator, how many products it holds, and a short preview of what is inside — a ready-made, human-curated shortlist of products in one theme.
/collections Discovery https://api.fetchlayer.dev/producthunt/collections Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
query string optional Search collections by name. Omit to browse the newest ones.
limit number optional Maximum collections returned (max 200), or -1 for everything available. (default: 20)
pages number optional Pages of results to collect in one request (max 100), or -1 for the maximum allowed. Each page walked counts as one request. (default: 1)
cursor string optional Resume from a previous response's nextCursor.
delayMs number optional Milliseconds to wait between pages (max 30000).
format string optional json or markdown. Markdown returns the same result rendered as text. (default: json)
timeoutMs number optional Per-request time limit in milliseconds (max 600000).
Response Fields
collections
Search or browse collections
query string | null The search term, or null when browsing.
collections object[] The matching collections.
collections[].name string | null Collection name, with title alongside it.
collections[].description string | null What the curator says the collection is for.
collections[].url string | null Public Product Hunt page for the collection.
collections[].productsCount number | null How many products the collection holds.
collections[].curator object | null Who maintains it.
collections[].products object[] A short preview of what the collection holds — names and logos.
collectionCount number Number of collections in this response.
pagesScraped number Pages actually collected. Each page counts as one request against your plan.
pagesRequested number Pages the request asked for.
nextCursor string | null Pass back as cursor to continue, or null when the listing is exhausted.
hasNextPage boolean Whether more results are available beyond this response.
requestedUrl string The Product Hunt page this result corresponds to.
scrapedAt string ISO timestamp the result was collected at.
notes string[] Read this. Caveats about this specific result — a walk that stopped early, an upstream ceiling, or promoted entries that were dropped. An empty array means nothing was held back.
blocked boolean Always false on a successful response.
Request
curl -X POST "https://api.fetchlayer.dev/producthunt/collections" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"query":"design tools","limit":20}'Response
{
"query": "design tools",
"collectionCount": 20,
"hasNextPage": true,
"notes": [],
"collections": [
{
"name": "Design tools I actually use",
"productsCount": 34,
"curator": {
"username": "maya"
}
}
]
}