{
  "openapi": "3.0.1",
  "info": {
    "title": "Launch & Maker Leads Scraper for Product Hunt",
    "description": "Scrape Product Hunt launches with makers, hunter, website, socials, votes, ranks, topics, pricing and launch deals. Any day, week, month or year; featured or all launches; topics, categories or URLs. Optional maker emails and monitoring. Independent tool, not affiliated with Product Hunt.",
    "version": "1.0",
    "x-build-id": "uTeYCiP37aCQK20UO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~product-hunt-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-product-hunt-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapesage~product-hunt-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-product-hunt-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapesage~product-hunt-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-product-hunt-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "daysBack": {
            "title": "Days back",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Launches from the last N days, today included (Product Hunt's day is the US Pacific day). With Topics or Categories, only their launches in those days. Leave it empty to get a topic's or category's product list instead. Ignored when Start URLs are given (use the dates below to add whole leaderboards)."
          },
          "dateFrom": {
            "title": "Date from (YYYY-MM-DD)",
            "type": "string",
            "description": "Start of a date range, e.g. 2026-06-01. Overrides Days back. With only a start date, the range runs to today."
          },
          "dateTo": {
            "title": "Date to (YYYY-MM-DD)",
            "type": "string",
            "description": "End of the date range (included), e.g. 2026-06-30. With only an end date, that one day is read."
          },
          "leaderboardPeriod": {
            "title": "Leaderboard",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly"
            ],
            "type": "string",
            "description": "Which Product Hunt leaderboard the dates read: one per day, the weekly leaderboards (ISO weeks), the monthly or the yearly ones that cover your dates.",
            "default": "daily"
          },
          "launchType": {
            "title": "Which launches",
            "enum": [
              "featured",
              "all"
            ],
            "type": "string",
            "description": "Featured launches are the ones Product Hunt curates onto its leaderboard (a few dozen a day). All launches adds every launch of the day (often 1,000+ a day, most with few votes) - the biggest list of new products and their makers. Also applies to topic and category lists.",
            "default": "featured"
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Product Hunt topic slugs or names, e.g. artificial-intelligence, developer-tools, saas, fintech, marketing (the slug is in producthunt.com/topics/<slug>). With Days back or dates: only launches tagged with these topics. Without them: each topic's product list, sorted as chosen below.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Product Hunt category slugs, e.g. ai-agents, crm-software, no-code-platforms (the slug is in producthunt.com/categories/<slug>). With Days back or dates: products in the category whose latest launch falls in those days. Without them: the category's product list, sorted as chosen below.",
            "items": {
              "type": "string"
            }
          },
          "productSort": {
            "title": "Sort topic & category lists by",
            "enum": [
              "highest_rated",
              "newest_launch",
              "most_followed"
            ],
            "type": "string",
            "description": "Order of a topic's or category's product list (when no dates are set).",
            "default": "highest_rated"
          },
          "maxProductsPerList": {
            "title": "Max products per topic/category list",
            "minimum": 0,
            "type": "integer",
            "description": "Topic and category product lists hold thousands of products; this many are read from each (0 = the whole list).",
            "default": 100
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Product Hunt URLs: leaderboards (/leaderboard/daily/2026/6/12, /leaderboard/weekly/2026/24/all, /leaderboard/monthly/2026/6), topics (/topics/saas), categories (/categories/ai-agents), products (/products/<slug>) or launches (/posts/<slug>, /products/<slug>?launch=<launch>). Add /all to a leaderboard URL for every launch, not only the featured ones.",
            "items": {
              "type": "string"
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of Product Hunt URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Google Sheet/Drive share links are handled automatically."
          },
          "includeProductDetails": {
            "title": "Include product details",
            "type": "boolean",
            "description": "Add each product's website, description, social links, followers, review rating, categories, first launch date, launch count and Y Combinator flag. It comes in the same request as the launch, so it costs no extra time. Turn off for leaner rows (topic and category lists always include the product).",
            "default": true
          },
          "enrichMakerEmails": {
            "title": "Enrich maker emails (lead generation)",
            "type": "boolean",
            "description": "Visit each product's own website (home page plus its contact / about pages) for contact e-mails, phone numbers and extra social profiles. Product Hunt never publishes e-mails. Only addresses on the product's own domain (or a personal mailbox shown on its site) are kept, and only launches where one was found are billed for it.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitoring mode (only new launches)",
            "type": "boolean",
            "description": "Deliver only launches that are new since the previous run with the same store name. The first run delivers the current launches and remembers everything listed; later runs deliver only what Product Hunt adds. Pair it with an Apify Schedule (e.g. daily) - the schedule starts the runs, this setting filters them. Without dates, a monitor of topics or categories watches the last two days.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that remembers what was delivered (letters, digits and hyphens). Use one name per monitored search so their histories stay separate.",
            "default": "product-hunt-monitor"
          },
          "maxItems": {
            "title": "Max launches",
            "minimum": 0,
            "type": "integer",
            "description": "Most launches to save in this run (0 or empty = no limit). Shared fairly between days, topics and lists. A run with no input at all saves a 25-launch sample."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Lists read side by side (each Product Hunt request returns 20 launches; at most 6 run at once) and product websites checked at once during e-mail enrichment (twice this number).",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Product Hunt refuses most datacenter IPs, so the default (Apify proxy) uses Apify residential proxies in the US. Your own proxy settings are tried first, with Apify residential as the fallback. Product websites (e-mail enrichment) use Apify datacenter proxies.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}